SA0170:不应使用输出变量的地址 检测输出变量地址所在的代码位置( VAR_OUTPUT , VAR_IN_OUT 使用功能块的 )。 理由: 不允许按以下方式使用功能块输出的地址: 通过 ADR 操作员 通过 REF= 例外:如果在同一功能块中使用输出变量,则不会报告错误。 重要性:中等 例 127 . 例子 功能块 FB1 有 VAR_OUTPUT 多变的 iOutVal : INT; 另
SA0034:分配不正确的枚举 检测分配给枚举变量的值。仅允许分配枚举变量的已定义枚举常量。 理由:枚举类型的变量应该只具有预期的值,否则使用该变量的代码可能无法正常工作。我们建议始终将枚举与 pragma 一起使用 {attribute 'strict'} 。然后编译器已经检查了枚举组件的正确使用。 重要性:高 例 45 . 例子 TYPE COLOR : ( Red := 0, Green,
SA0041:检测可能的循环不变代码 检测循环中为每个循环周期计算相同值的分配。这些代码行可以插入到循环之外。 理由:这是一个性能警告。在循环中执行但在每个循环中执行相同操作的代码可以在循环外执行。 重要性:中等 例 49 . 例子 PROGRAM PLC_PRG VAR iCounter, iVar1, iVar2 : INT; END_VAR FOR iCounter := 0 TO 10 D
SA0145:可能使用未初始化的引用 检测任何在使用前可能未初始化且操作员未检查的参考变量 __ISVALIDREF .该规则适用于 POU 的实现部分。对于声明,有规则 SA0124 . 理由:访问前应检查引用的有效性,因为访问期间可能会发生访问冲突。 重要性:高 例 115 . 例子 PROGRAM PLC_PRG VAR_INPUT ref_iTest : REFERENCE TO INT;
SA0113:数据类型为 WSTRING 的变量 检测类型变量 WSTRING 理由:并非所有系统都支持 WSTRING .代码更容易移植,无需 WSTRING . 重要性:低 例 97 . 例子 VAR wstrTemp : WSTRING; END_VAR 输出在 留言 看法: SA0113:不允许数据类型 WSTRING 本节内容如下 :
SA0114:数据类型为 LTIME 的变量 检测类型变量 LTIME 理由:并非所有系统都支持 LTIME 代码更容易移植,无需 LTIME . 重要性:低 例 98 . 例子 VAR ltVar : LTIME; // SA0114 END_VAR 输出在 留言 看法: SA0114:不允许数据类型 LTIME 有关更多信息,请参阅: 属性“分析:报告多实例调用” 本节内容如下 :
CODESYS Static Analysis CODESYS GmbH 版本:V5.0.0.0,2024 年 4 月 www.codesys.cn 最后更新: Wed, 24 Apr 2024 09:27:46 本节内容如下 :
CODESYS Static Analysis 和 CODESYS Static Analysis ,可以使用定义的规则、命名约定或度量来执行 IEC 源代码的检查。因此,可能的开发问题的迹象会突出显示,并且可以在现场测试之前识别和纠正错误。这可以在应用程序开发和错误检查期间节省大量时间。 在 CODESYS Static Analysis ,已经实现了 100 多个规则(其中一些可以参数化)。可
概述 重要 仅对当前项目中的应用程序代码进行静态分析。不分析库及其源代码。 CODESYS Static Analysis 在实施过程中帮助您编写更好、更易读的代码,并识别冲突或不受支持的程序部分。特别是,揭示了潜在的错误来源。例如,识别仍包含测试代码的位置。或者发现在取消引用之前未检查 0 的指针。或者(与 SA0119 规则)分析使用面向对象的位置并移植到另一个不支持面向对象的开发环境,从而使
ST 代码中违反规则的快速修复 在里面 静态分析设置 对话框,在 规则 选项卡,您可以启用 ST 代码的规则。根据预编译信息检查这些规则的合规性。不需要显式调用静态分析来检测任何此类违反规则的行为。在预编译期间和成功编译之后,在活动的 ST 编辑器中检查是否符合规则。当发生违反规则时,它会立即在 ST 编辑器中以波浪下划线显示。此外,在消息视图中,错误消息或警告列在 预编译 看法。 有关说明,请参