SA0081:上边界不是常数 检测到 FOR 未使用常量值定义上限的语句 理由:如果循环的上限是一个变量值,那么就不再可能看到循环执行的频率。这可能会导致运行时出现严重问题。最坏的情况是无限循环。 重要性:高 例 85 . 例子 PROGRAM PLC_PRG VAR i:INT; iBorder1: INT := 10; iBorder2: INT := 10; iCounter: INT; E
SA0055:无符号操作数的不必要比较 检测与无符号操作数的不必要比较。无符号数据类型永远不会小于零。这可以用作符号检查。 理由:使用此检查检测到的比较会产生恒定的结果,并且表明代码中存在错误。 重要性:高 例 64 . 例子 PROGRAM PLC_PRG VAR byTest: BYTE; END_VAR // SA0055 WHILE byTest >= 0 DO byTest := byT
SA0056:常数超出有效范围 检测运算符有效范围之外的文字(常量) 说明:在将某个值与超出该值范围的常数进行比较时发出该消息。然后比较不断返回 TRUE 或者 FALSE .这是编程错误的指示。 重要性:高 例 65 . 例子 PROGRAM PLC_PRG VAR byTestVar: BYTE; END_VAR WHILE byTestVar >= 260 DO byTestVar := b
SA0133:显式缩小转换 检测从较大数据类型到较小数据类型的显式转换 理由:大量类型转换可能表明您为变量选择了错误的数据类型。因此,有一些编程指南要求对数据类型转换提供明确的理由。 重要性:低 例 55 . 例子 PROGRAM SA0133 VAR siVar:SINT; diVar:DINT; liVar:LINT; byVar:BYTE; uiVar:UINT; dwVar:DWORD;
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 '