SA0042:使用不同的访问路径 检测同一变量的不同访问路径的使用情况 理由:对同一元素的不同访问会降低程序的可读性和可维护性。我们建议一致使用 {attribute 'qualified-only'} 用于库、全局变量列表和枚举。这会强制进行完全限定的访问。 重要性:低 例 50 . 例子 VAR_GLOBAL iTemp:INT; instPOU:POU; END_VAR FUNCTION_B
SA0140:注释掉的语句 检测注释掉的语句 理由:出于调试目的,代码经常被注释掉。当这种注释发布时,以后并不总是清楚代码是否应该被删除,或者它是否出于调试目的而被注释掉并且无意中没有被注释掉。 重要性:高 PLCopen 规则:C4 例 112 . 例子 PROGRAM PLC_PRG VAR iValue1: INT; iValue2: INT; END_VAR iValue1 := 100;
SA0039:可能的空指针引用 检测可能取消引用空指针的代码位置 理由:在每次取消引用之前应检查指针以确保它不等于零。否则,运行时可能会发生访问冲突。 重要性:高 例 113 . 例子 PROGRAM PLC_PRG VAR ptiVar1:POINTER TO INT; ptiVar2:POINTER TO INT; ptiVar3:POINTER TO INT; iVar:INT; iCoun
SA0150:违反下限或上限或指标 检测违反下限或上限激活指标的 POU 理由:符合某些指标的代码更易于阅读、更易于维护和更易于测试。 重要性:高 PLCopen规则:CP9 例 116 . 例子 初始情况: 通话次数 指标选择在 项目设置→静态分析→指标 .下限: 0 ;上限: 3 . Prog_1 被调用五次。 运行静态分析时, SA0150:Prog_1 的度量违规。指标调用报告 (5) >
SA0119:面向对象的特性 检测面向对象功能的使用,例如功能块声明 EXTENDS 和 IMPLEMENTS ,或属性和接口声明。当您编写旨在移植到其他符合 IEC 61131-3 的系统的代码时,此规则很有用。 理由:并非所有系统都支持面向对象编程。没有面向对象的代码更容易移植。 重要性:低 例 101 . 例子 //Function block extended by another and
SA0120:程序调用 检测程序调用 说明:根据IEC 61131-3标准,程序只能在任务配置中调用。当您不从其他位置调用程序时,代码更容易移植。 重要性:低 例 102 . 例子 PROGRAM prog_control VAR END_VAR ; PROGRAM PLC_PRG VAR END_VAR prog_control(); 输出在 留言 看法: SA0120:不允许程序调用“prg_