SA0162:缺少注释 检测程序中未注释的位置 理由:许多编程指南都要求完整的注释,它增加了代码的可读性和可维护性。 重要性:低 PLCopen 规则:C2 在以下情况下需要注释: 对于变量的声明。评论位于上方或右侧。 用于程序、功能块或方法的声明。注释位于声明上方(第一行)。 例 119 . 例子 PROGRAM PLC_PRG VAR iMaxValue: INT; END_VAR 输出在 留
SA0163:嵌套注释 检测嵌套评论 理由:应避免嵌套注释,因为它们难以阅读。 重要性:低 PLCopen 规则:C3 例 120 . 例子 {attribute 'do-analysis'} (* That is (* nested comment 1 *) *) PROGRAM PLC_PRG VAR (* That is // nested comment 2 comment *) iVal
SA0164:多行注释 检测编码为的多行注释 (* comment *) .仅编码为的单行注释 // comment 被允许。 理由:一些编程指南禁止代码中的多行注释,因为注释的开头和结尾可能会丢失,并且结束注释括号可能会被意外删除。 提示 您可以通过编译指示停用此检查 analysis ,也用于声明部分的注释。 重要性:低 PLCopen规则:C5 例 121 . 例子 {attribute '
SA0165:调用其他 POU 而非程序的任务 检测调用功能块或函数而不是程序的任务 理由:此规则是 PLCopen 编码指南的一部分。因此,还检查了合规性 CODESYS .我们没有看到任何数据一致性问题 CODESYS 如果任务会调用程序以外的 POU。但是,如果要将代码移植到其他平台,则可能会出现问题。 重要性:低 PLCopen规则:CP16 任务被插入到任务配置下方。要调用的 POU 在
SA0172:可能尝试访问数组边界之外 检测对数组边界之外的数组索引的可能访问。 通常会超出数组索引的范围 FOR 循环,其中索引变量用于访问数组索引。 重要性:高 例 129 . 例子 PROGRAM Test VAR_TEMP iIndex: INT; arUSINT: Array[0..10] OF INT; END_VAR FOR iIndex := INT#0 TO INT#50 DO
SA0035:未使用的输入变量 检测未被任何功能块实例使用的输入变量 理由:未使用的变量使程序的可读性和可维护性降低。未使用的变量不必要地填充内存并在初始化期间不必要地浪费运行时间。 重要性:中等 PLCopen规则:CP24 例 43 . 例子 FUNCTION_BLOCK FB_Afb VAR_INPUT iIn1: INT; iIn2: INT; END_VAR VAR_OUTPUT iOu
SA0036:未使用的输出变量 确定未在相关功能或功能块内分配的功能和功能块的输出变量。 理由:未使用的变量使程序的可读性和可维护性降低。未使用的变量不必要地填充内存并在初始化期间不必要地浪费运行时间。 重要性:中等 PLCopen规则:CP24 例 44 . 例子 FUNCTION_BLOCK FB_Afb VAR_INPUT iIn1: INT; iIn2: INT; END_VAR VAR_