通过下面的基本示例项目,您将找到配置和运行静态分析的最重要步骤和选项。
要求:已安装CODESYS Static Analysis 。
样本项目
如果要复制示例项目,请创建一个标准项目,并在设备树中应用程序下方插入 POU。然后配置连接到本地CODESYS Control Win V3 的通信设置。
FUNCTION_BLOCK fb1 VAR_INPUT iVar_fb1in1 : INT; ivar_fb1in2 : INT; rVar_fb1in3 : REAL; END_VAR VAR_OUTPUT iVar_fb1out:INT; END_VAR VAR P_fSampleProperty : INT; rVar : REAL; PRO : BOOL; END_VAR iVar_fb1out:=iVar_fb1in1 + 1; FUNCTION_BLOCK fb2 VAR_INPUT iVar_fb2in:INT; END_VAR VAR_OUTPUT iVar_fb2out:INT; END_VAR VAR END_VAR
PROGRAM PLC_PRG VAR fb1_inst: fb1; fb2_inst: fb2; END_VAR fb1_inst(iVar_fb1in1 := 99); fb2_inst(iVar_fb2in := 22); fb2_inst(iVar_fb2in := 1);
检查遵守规则的情况
-
单击“Build Static Analysis Settings” 。切换到“Rules” 选项卡。
显示的列表包含所有可能的规则检查。它们按专题类别以树形结构排列。规则编号加在括号中(例如,“未使用的变量 (33)” 在类别“未使用的对象” )。
-
单击几下第一行的复选框(“Rules” 节点)。
点击可切换激活状态。整个树中的复选框都有一个红色或橙色的复选标记,或者根本没有复选标记。
-
这样,激活所有带红色对号的条目。这意味着CODESYS Static Analysis 应将检测到的任何违反规则的行为报告为错误。
-
单击“Build Static Analysis Run Static Analysis” 。
错误会在信息视图中报告。信息文本以
标记,并以错误编号 "SA<规则编号>"开头。
-
双击第一条信息
SA0033: Unused variables 'iVar_fb2out'
。焦点移至功能块
fb2
的声明部分,并选择相关变量。变量已声明,但未使用。第 33 条(“未使用的变量” )对此进行了检查。在代码中,相关位置用波浪线划出。 -
要测试分析的自动执行,请单击“Build Static Analysis Settings” 。在“Settings” 选项卡上,选择“Perform static analysis automatically” 选项。单击“OK” 退出对话框。
-
点击“在线 登录” 。
对话框提示存在编译错误。代码分析报告的错误会再次显示在消息视图中。
-
单击“Build Static Analysis Settings” 。切换到“Rules” 选项卡。现在清除对话框中的所有规则。在“未使用的对象” 类别中,明确激活规则 SA0035 (“未使用的输入变量 (35)”) 并打上橙色对号,以报告警告。有关规则文本,请参阅工具提示:“该规则与以下 PLCopen 规则相对应:CP24” )。单击“OK” 退出对话框。
在项目设置中,单击“OK” 。
-
单击“Build Generate Code” 。
分析是自动进行的。信息视图中报告了两种错误:
§ SA0035: Unused input variable 'iVar_fb1in2
和§ SA0035: Unused input variable 'iVar_fb1in3
。 -
双击信息并注释或删除声明。再次进行代码分析。
不显示错误信息。
检查是否符合规定的命名约定
-
单击“Build Static Analysis Settings” 。单击“Naming Conventions” 选项卡。
你会看到一个树形结构的表格,它分为可扩展的变量和程序块类别。
-
展开“变量前缀” -“类型前缀” 类别,在“前缀” 列中,指定
I
为“INT (14)” 。扩展“POU 的前缀” -“POU 类型的前缀” 类别:在“前缀”一栏中,为 “PROGRAM (122)” 指定
prog
,为“FUNCTIONBLOCK (103)” 指定fb
。 -
选择“前缀后的第一个字符应为大写字母” 选项。清除所有其他选项。
-
单击“Build Static Analysis Run Static Analysis” 。
错误信息:
-
NC0102: Invalid name 'PLC_PRG': Expect prefix 'prog'
因为 PLC_PRG 没有所需的前缀 -
First character after prefix should be uppercase: 'ivar_fb1in2'
因为ivar_fb1in2 : INT;
在fb1
-
NC0014: Invalid variable name P_fSampleProperty: Expect prefix 'i'
因为这个整数变量没有所需的前缀
-
检查禁止使用的符号
-
单击“Build Static Analysis Settings” 。单击“Forbidden Symbols” 选项卡。
行编辑器允许指定代码中不应使用的字符串。
-
例如,双击空白行并直接输入无效字符串
PRO
。双击下一个空行,然后单击打开输入辅助工具。从“标准类型” ,选择“REAL” 。单击“OK” 退出对话框。
-
单击“Build Static Analysis Run Static Analysis” 。
错误信息
Forbidden symbol 'REAL'
和Forbidden symbol 'PRO'
显示在信息视图中。双击信息文本,跳转到相关代码行。
显示衡量标准
CODESYS Static Analysis 对代码执行选定的测试,并在视图中显示结果。
-
单击“Build Static Analysis Settings” 。单击“Metrics” 选项卡。
CODESYS Static Analysis 应用于代码的度量标准列于表中。
-
在此示例中,激活“输入变量个数” 公制,并指定允许的值范围:下限
1
和上限2
。激活更多指标,例如“代码大小” 和“调用次数” 。 -
单击“构建 静态分析 查看标准度量” 。
该视图包括一个表格,其中每行代表一个“程序单元” 样本程序。每个激活的指标都有一栏显示测量值。超出设置中定义的数值范围的数值会以红色标出。在本例中,这至少是“PLC_PRG/Inputs” 字段,因为该 POU 中输入变量的数量大于
2
的定义上限。
另见