指标 提供的指标的详细描述 CODESYS Static Analysis 提示 这 代码大小 , 尺寸可变 , 堆栈大小 , 和 通话次数 仅报告项目中集成的库中的 POU 的指标。 指标:代码大小(字节数) 类别: 信息丰富、效率 功能块为应用程序代码贡献的字节数 该数量还取决于代码生成器。例如,ARM 处理器的代码生成器通常比 x86 处理器的代码生成器生成更多字节。 指标:可变大小(字节数
定义命名约定 在里面 静态分析设置 对话框,在 命名约定 选项卡,定义您将在代码中遵循的命名约定。您可以根据其范围和限定符为 POU、变量和数据类型的标识符定义前缀。 然后,您可以让静态分析检查命名约定的合规性。 有关说明,请参阅: 检查是否符合定义的命名约定 定义前缀 在里面 静态分析设置 对话框,在 命名约定 选项卡,在输入字段中定义命名约定 字首 柱子。 字符字面量 例子: PRG_ 在 P
SA0046: 可能使用未初始化的接口 检测使用前未初始化的接口的使用情况 理由:接口引用在使用之前应该检查<> 0。否则访问过程中可能会出现访问冲突。 重要性:高 例 114 . 例子 //Declaration of INTERFACE ITF and assigned METH2: METHOD METH2 : BOOL VAR_INPUT iInput2:INT; END_VAR //De
属性:'naming' 该属性标记了被排除在外的代码行 命名约定分析 .一个 off 在停用代码分析的第一个代码行之前分配给 pragma 属性。一个 on 在最后一行之后分配。当一个 omit 被分配,只有下一个代码行被忽略。 插入位置 :停用:在 POU 和 DUT 的声明部分中,受影响的行上方。激活:在受影响的线下方。 句法 : {attribute 'naming' := '<switch
不断传播 随着 CODESYS Static Analysis 版本V5.0.0.0,代码的分析基于常量传播。恒定传播的结果用于各种检查。例如,它检查指针是否不等于 0,或者数组索引是否超出有效范围。 只需了解静态分析的工作原理及其局限性,您就可以有效地支持静态分析。 不断传播 静态分析尝试根据变量的用途来确定变量的值。 例 1 . 例子 PROGRAM PLC_PRG //Declaration
SA0058:对枚举变量的操作 检测对枚举数据类型的变量的操作 允许赋值。 理由:枚举不应用作普通整数值。或者,可以定义别名数据类型或者可以使用子范围类型。 重要性:中等 例外:如果枚举用 pragma 标记 {attribute 'strict'} ,那么编译器已经报告了这种操作。 如果枚举被 pragma 声明为标志 {attribute 'flags'} ,则不会发出错误 AND , OR
SA0130:隐式扩展转换 检测算术运算期间隐式执行从较小数据类型到较大数据类型的转换的代码位置 理由:当源类型的值范围完全包含在目标类型的值范围内时,编译器允许不同类型的任何赋值。但是,编译器将尽可能晚地构建对代码的转换。对于类型的赋值 lint := dint * dint ,编译器仅在乘法之后执行隐式转换: lint := TO_LINT(dint * dint); 因此溢出被截断。如果你想
SA0134:显式有符号/无符号转换 检测从有符号数据类型到无符号数据类型的显式转换,反之亦然 理由:过度使用类型转换可能表明为变量选择了错误的数据类型。因此,有一些编程指南要求对数据类型转换提供明确的理由。 重要性:低 例 56 . 例子 PROGRAM PLC_PRG VAR byVar :BYTE; udiVar : UDINT; uliVar : ULINT; lwVar : LWORD;
SA0147:不寻常的班次操作 -strict 检测不对位域数据类型进行的位移操作( BYTE , WORD , DWORD , LWORD ) 说明:IEC 61131-3 标准只允许对位域数据类型进行位访问。但是,那 CODESYS 编译器还允许对无符号数据类型进行位移操作。 重要性:低 提示 另见严格规则 SA0018 . 例 107 . 例子 PROGRAM PLC_PRG VAR in_
配置和运行静态分析 使用下面的基本示例项目,您将找到配置和运行静态分析的最重要的步骤和选项。 要求: CODESYS Static Analysis 已安装。 示例项目 如果要重现示例项目,请创建一个标准项目并将 POU 插入设备树中的应用程序下方。然后配置连接到本地的通信设置 CODESYS Control Win V3 。 FUNCTION_BLOCK fb1 VAR_INPUT iVar_f