SA0171:枚举应具有“strict”属性 检测未提供的枚举声明 {attribute 'strict'} 属性。 理由: {attribute 'strict'} 如果代码违反了严格的枚举编程规则,属性会导致编译器错误。默认情况下,创建新枚举时,声明会自动分配 'strict' 属性。 有关更多信息,请参阅: 数据类型:枚举 重要性:高 例 128 . 例子 TYPE COLOR : ( re
SA0040:可能被零除 检测可能被零除的代码位置 理由:除以 0 导致错误。应始终首先检查要除法的变量是否为 0。 重要性:高 例 48 . 例子 VAR_GLOBAL g_iVar AT %QW1 : INT; END_VAR PROGRAM PLC_PRG VAR iCounter : INT; iSumme:INT; iMid:INT; iVal1:INT := INT#2; iVal2:
SA0121:缺少 VAR_EXTERNAL 声明 检测功能块中全局变量的使用,而无需将其声明为 VAR_EXTERNAL 理由:根据 IEC 61131-3 标准,只有通过显式导入才允许访问全局变量 VAR_EXTERNAL 宣言。 重要性:低 PLCopen规则:CP18 例 103 . 例子 VAR_GLOBAL iGlob1 : INT; END_VAR PROGRAM PLC_PRG V
SA0122:数组索引定义为表达式 检测数组索引声明中表达式的使用 理由:并非所有系统都允许将表达式作为数组限制。 重要性:低 例 105 . 例子 PROGRAM PLC_PRG VAR CONSTANT c_iValue : INT := INT#15; END_VAR VAR arr : ARRAY [0..c_iValue + 1] OF INT; END_VAR 输出在 留言 看法: S
SA0123:INI、ADR 或 BITADR 的用法 检测使用 CODESYS Static Analysis - 特定的运算符 INI , ADR , 和 BITADR . 理由: CODESYS - 特定的运算符会阻止代码的可移植性。 重要性:低 例 106 . 例子 PROGRAM PLC_PRG VAR uiTemp : UINT; TempVarInFUNC : DWORD; END_
对话框:静态分析设置:指标 象征: 功能 :配置指标,以便在 查看标准指标 命令被执行。 称呼 : 项目 → 项目设置 菜单, 静态分析 类别, 打开配置对话框 关联 构建 → 静态分析 → 设置 菜单 要求 : 这 CODESYS Static Analysis 安装包。 一个项目已打开。 有关更多信息,请参阅: 配置和运行静态分析 指标 全部可选 指标 都显示在列中。 积极的 : 为每个 PO
命令:提取函数 功能 :该命令打开 提取功能配置 对话。 该命令从 ST 编辑器中提取选定的代码,并创建一个包含该代码的新方法或函数。 ST 编辑器中受影响的代码被正确的调用替换。当从功能块或功能块的子项中提取代码时,会从代码中创建一个新方法。当从程序或函数中提取代码时,会从代码中创建一个新函数。 在这种情况下还要注意: 检测代码克隆 称呼 : 上下文菜单: 重构 要求 :当所选代码包含一个或多个
命令:显示当前编辑器的恒定传播值 象征: 功能 :该命令启动静态代码分析,并计算当前编辑器中代码不断传播的测量值。打开的对话框显示结果。列出分析的代码并显示确定的测量值。 称呼 : 构建 → 静态分析 菜单 要求 :在编辑器中打开 ST 实现语言的编程对象。 有关更多信息,请参阅: 不断传播 对话:不断传播的结果 例 10 . 例子 本节内容如下 :
命令:查看标准指标 象征: 功能 :该命令启动活动应用程序的静态代码分析。然后计算所有编程块的默认指标并将其显示在表格中 标准指标 标签。 称呼 : 构建 → 静态分析 菜单 有关更多信息,请参阅: 显示指标 指标 选项卡:标准指标 例 11 . 例子 提示 在里面 静态分析设置:指标 对话框中,您可以更改指标的配置。您可以禁用指标的计算。您还可以为特定指标定义限制值。 注意 如果值超出配置的上限
命令:显示当前编辑器的认知复杂性 象征: 功能 :该命令启动静态代码分析,并计算当前编辑器中代码认知复杂度的测量值。打开的对话框会显示结果并在标题中指定测量值总和。列出并显示分析的代码以及检测到的复杂性。 称呼 : 构建 → 静态分析 菜单 要求 :在编辑器中打开 ST 实现语言的编程对象。 对话框:<POU 名称> 的认知复杂性:<计算的测量值> 例 13 . 例子 本节内容如下 :