SA0103:对非原子数据的并发访问 检测是否非原子变量(例如,具有数据类型 STRING , WSTRING , ARRAY , STRUCT 、FB 实例、64 位数据类型)用于多个任务 理由:在访问过程中没有同步的情况下,在一个任务中读,同时在另一个任务中写入时,可能会读到不一致的值。 重要性:中等 提示 对于某些数据类型,尤其是 64 位整数,访问是否是原子的取决于平台。仅当控制器不支持对
检测代码克隆 要求: CODESYS Static Analysis 已安装。 A CODESYS 项目已开放。该项目至少在两个编程对象中包含相同的代码块。 点击 构建 → 静态分析 → 检测克隆 。 这 克隆检测结果 视图打开。 点击 结果 . 检测到的代码克隆在窗口中显示为树形视图。 如果除了相同的代码克隆之外,还存在有偏差的代码克隆,则这些子节点在树视图中以颜色突出显示。 在树形视图中,选
对话框:静态分析设置: 规则 功能 :在对话框中选择 规则 在项目源代码的静态分析过程中检查。 有关更多信息,请参阅: 配置和运行静态分析 称呼 : 项目 → 项目设置 菜单, 静态分析 类别, 打开配置对话框 关联 构建→静态分析→设置 菜单 要求 : 这 CODESYS Static Analysis 包已安装。 一个项目已打开。 此选项卡显示可以在静态分析期间检查的所有规则的树结构。默认情况
命令:提取函数 功能 :该命令打开 提取功能配置 对话。 该命令从 ST 编辑器中提取选定的代码,并创建一个包含该代码的新方法或函数。 ST 编辑器中受影响的代码被正确的调用替换。当从功能块或功能块的子项中提取代码时,会从代码中创建一个新方法。当从程序或函数中提取代码时,会从代码中创建一个新函数。 在这种情况下还要注意: 检测代码克隆 称呼 : 上下文菜单: 重构 要求 :当所选代码包含一个或多个
命令:查看标准指标 象征: 功能 :该命令启动活动应用程序的静态代码分析。然后计算所有编程块的默认指标并将其显示在表格中 标准指标 标签。 称呼 : 构建 → 静态分析 菜单 有关更多信息,请参阅: 显示指标 指标 选项卡:标准指标 例 11 . 例子 提示 在里面 静态分析设置:指标 对话框中,您可以更改指标的配置。您可以禁用指标的计算。您还可以为特定指标定义限制值。 注意 如果值超出配置的上限
SA0018:异常位访问 检测对有符号变量的位访问。但是,IEC 61131-3 标准只允许对位域进行位访问和位移操作。另请参阅严格的规则 SA0147 和 SA0148 . 另请参阅严格规则 SA0147 和 SA0148 。 理由:有符号数据类型不应用作位字段,反之亦然。 IEC 61131-3 标准不提供这种访问,因此您在编写可移植代码时应遵守此规则。 重要性:中等 提示 标志枚举的例外:当
SA0007:常量上的地址运算符 检测操作员所在的代码行 ADR 应用于一个常数 理由:使用指向常量变量的指针会覆盖 CONSTANT 变量的属性。可以通过指针更改变量,而无需编译器发出任何通知。 例外:在极少数情况下,将指向常量的指针传递给函数可能很有用。但是,您必须确保此函数不会更改传输的值。尽可能使用 VAR_IN_OUT CONSTANT . 重要性:高 提示 当。。。的时候 替换常量 选
SA0145:可能使用未初始化的引用 检测任何在使用前可能未初始化且操作员未检查的参考变量 __ISVALIDREF .该规则适用于 POU 的实现部分。对于声明,有规则 SA0124 . 理由:访问前应检查引用的有效性,因为访问期间可能会发生访问冲突。 重要性:高 例 115 . 例子 PROGRAM PLC_PRG VAR_INPUT ref_iTest : REFERENCE TO INT;
SA0150:违反下限或上限或指标 检测违反下限或上限激活指标的 POU 理由:符合某些指标的代码更易于阅读、更易于维护和更易于测试。 重要性:高 PLCopen规则:CP9 例 116 . 例子 初始情况: 通话次数 指标选择在 项目设置→静态分析→指标 .下限: 0 ;上限: 3 . Prog_1 被调用五次。 运行静态分析时, SA0150:Prog_1 的度量违规。指标调用报告 (5) >
SA0161:压缩结构中的未压缩结构 检测在打包结构中使用的未打包结构 理由:编译器通常将解包结构设置为一个地址,该地址允许对结构内的所有元素进行对齐访问。如果您在打包结构中创建此结构,则不再可能进行对齐访问。此外,访问解压缩结构中的元素可能会导致“未对齐异常”。 重要性:高 例 118 . 例子 结构 structSingleDataRecord 已打包,但它包含未打包的结构 struct4By