静态分析代码
您还可以在代码生成期间对源代码进行静态分析(“linten”)。它确定您的源代码是否遵循您设置的编码准则 - 沿着“lint”分析工具的行。
在对话中 项目设置 在类别下 静态分析灯 启用将被检查的规则。每次生成代码时,检查本身都会自动进行,例如当您运行命令时 选择。如果检测到与规则的偏差,则将其分类为该类别的错误消息 翻译 显示在消息窗口中。报告的错误有一个前缀:
SA<Zahl>
.
重要
用于静态代码分析 静态分析灯 仅检查项目的应用程序代码。图书馆被排除在考试之外。
视图中 GVL 的变量 POU 不一定要检查:如果您的项目包含多个应用程序,则仅检查当前活动应用程序下的对象。如果您只有一个应用程序,还会检查通用 POUs 池中的对象。
提示
静态分析灯 仅包含在标准开发系统中的一组减少的规则中。安装附加组件时,可以使用一组扩展的规则、额外的命名约定和指标 CODESYS Static Analysis 安装。
从静态分析中排除带有编译指示的实现中的代码行
你可以在 pragma 的帮助下 {analysis ...}
标记代码以便不检查指定的规则。因此,以这种方式标记的代码行不会被静态分析。在测试期间,标记的代码将被忽略。
句法:
{analysis <Vorzeichen><Regelnummer>|,<weitere Kombinationen von Vorzeichen und Regelnummern, kommasepariert>}
-<Regelnummer>
: 关闭规则 SA<rule number> 的检查。
+<Regelnummer>
: 激活规则 SA<rule number> 的检查。
排除实现代码
要求:你有对话框 项目设置 启用规则。
添加编译指示
{analysis -<number>}
在包含您第一次不想检查的代码的代码行上方。例如,对于规则 SA0024代码行是代码片段的第一行,没有根据规则 24 进行检查。
添加编译指示
{analysis +<number>}
在包含第一次不检查的代码的代码行下方。示例:对于规则 SA0024
上面的代码行是未根据规则 24 检查的代码片段的最后一行。
{analysis -24} nTest := 99; iVar := INT#2; {analysis +24}
规则 SA0024:无类型文字 禁用 2 行。尽管代码未更正为: nTest := DINT#99;
{analysis -10, -24, -18} ... {analysis +10, +24, +18}
SA0010:只有一个组件的数组
SA0018:异常位访问
SA0024:无类型文字
提示
但是,您可以统治 SA0004
: 对输出的多次写访问 不要通过编译指示禁用。
使用 pragma 从静态分析中排除编程对象
句法:
{attribute 'analysis' := '-<rule number>[,<other negative rule numbers, comma-separated>]'}
如果在编程对象的声明部分中包含属性 pragma,则整个编程对象的指定规则都将被排除。如果排除了多个规则,则这些规则必须用带减号和数字的逗号分隔。不需要用于开机的 pragma 语句。
{attribute 'analysis' := '-33, -31'} TYPE LocalData : STRUCT iLocal : INT; uiLocal : UINT; udiLocal : UDINT; END_STRUCT END_TYPE
结构中使用了规则 SA0033 和 SA0031 LocalData
忽略。
{attribute 'analysis' := '-100'} big: ARRAY[1..10000] OF DWORD;
规则 SA0100 应用于阵列 big
忽略。