在项目下载到目标系统之前,静态分析功能检查项目的源代码是否与某些编码指令存在偏差。这沿用了 lint 分析工具的基本理念。
您在项目设置 > 静态分析灯对话框中定义一系列所需的规则。
注意: 每次生成代码时,会自动执行检查。
如果与规则存在偏差,则会以类别为生成的消息的形式显示在消息视图中。错误编号显示为SA<编号>的形式。
注意: 仅对当前项目中的应用程序代码执行分析。不考虑库。
注意: 对于 GVL 变量:如果项目中有多个应用程序,则仅检查当前活动应用程序下的对象。如果项目中只有一个应用程序,则也会检查 POU 池中的所有对象。
借助 pragma 指令,您可以将代码的某些部分排除在检查之外。
前提条件:必须在项目设置中激活规则。
注意: 无法通过 pragma 禁用“在输出上有多个写访问”。
您可以使用 pragma {analysis ...} 来禁用后续代码行的特定编码规则。为此,将其两次置于:相关代码上方的行中(禁用),以及相关代码下方的行中(重新启用);要禁用的规则的每个编号在指定时其前面都必须添加减号 (–)(对于禁用),或者添加加号 (+)(对于重新启用)。根据规则,pragma 可以用在编程对象的声明部分中或实现部分中。
语法
{analysis <sign><rule number>|,<further sign / rule number combinations separated by commas>}
示例
为两行禁用了规则 24(这就意味着,这里不必写入(比如)nTest:=DINT#99),之后此规则被重新启用。
{analysis -24}
nTest := 99;
iVar := INT#2;
{analysis +24}
指定多个规则:
{analysis -10, -24, -18}
属性 {attribute 'analysis' := '...'}
您可以在声明部分中使用属性 {attribute 'analysis' := '<sign><rule number>'} 来为整个编程对象启用或禁用特定规则:
语法
{attribute 'analysis' := '<sign><rule number>|,<further rule numbers separated by commas>'}
示例
为整个结构禁用了规则 33 和 31:
{attribute 'analysis' := '-33, -31'}
TYPE My_Structure :
STRUCT
iLocal : INT;
uiLocal : UINT;
udiLocal : UDINT;
END_STRUCT
END_TYPE
为数组禁用了规则 100:
{attribute 'analysis' := '-100'}
big: ARRAY[1..10000] OF DWORD;