Skip to main content

配置和运行静态分析

使用下面的基本示例项目,您将找到配置和运行静态分析的最重要的步骤和选项。

要求: CODESYS Static Analysis 已安装。

示例项目

如果要重现示例项目,请创建一个标准项目并将 POU 插入设备树中的应用程序下方。然后配置连接到本地的通信设置 CODESYS Control Win

FUNCTION_BLOCK fb1
VAR_INPUT
    iVar_fb1in1 : INT;
    ivar_fb1in2 : INT;
    rVar_fb1in3 : REAL;
END_VAR
VAR_OUTPUT
       iVar_fb1out:INT;
END_VAR
VAR
    P_fSampleProperty : INT;
    rVar : REAL;
    PRO : BOOL;
END_VAR
iVar_fb1out:=iVar_fb1in1 + 1;
FUNCTION_BLOCK fb2
VAR_INPUT
    iVar_fb2in:INT;
END_VAR
VAR_OUTPUT
    iVar_fb2out:INT;
END_VAR
VAR
END_VAR
iVar_fb2out:=iVar_fb2in - 1;
PROGRAM PLC_PRG
VAR
    fb1_inst: fb1;
    fb2_inst: fb2;
END_VAR
fb1_inst(iVar_fb1in1 := 99);
fb2_inst(iVar_fb2in := 22);
fb2_inst(iVar_fb2in := 1);

检查是否遵守规则

  1. 点击 构建→静态分析→设置.切换到 规则 标签.

    将显示一个列表,其中包含所有可能的规则检查。它们按主题类别以树形结构组织。 “规则编号”添加在括号中(例如: 未使用的变量 (33) 在类别中 未使用的对象)。

  2. 单击第一行的复选框几次(规则 节点)。

    单击切换激活状态。整个树中的复选框带有红色或橙色复选标记,或者根本没有复选标记。

  3. 这样,激活所有带有红色复选标记的条目。这意味着 CODESYS Static Analysis 应将检测到的任何违反规则的行为报告为错误。

  4. 点击 构建 → 静态分析 → 运行静态分析

    在消息视图中报告错误。消息文本标有 sa_icon_message.png 并以错误号“SA<rule number>”开头。

  5. 双击该消息 SA0033:未使用的变量“iVar_fb2out”

    焦点移至功能块声明部分 fb2 并选择相关变量。该变量已声明,但未使用。这在规则 33 中进行了检查(未使用的变量)。代码中,相关位置用波浪线下划线表示。

  6. 要测试分析的自动执行,请单击 构建 → 静态分析 → 设置.在 设置 选项卡,选择 编译后自动进行静态分析 选项。点击 好的 退出对话框。

  7. 点击 在线→登录

    对话框提示存在编译错误。代码分析报告的错误再次显示在消息视图中。

  8. 点击 构建 → 静态分析 → 设置。切换到 规则 标签。现在清除对话框中的所有规则。在里面 未使用的对象 类别,显式激活规则 SA0035 (未使用的输入变量 (35))带有橙色复选标记以报告“警告”。请参阅规则文本的工具提示: 该规则对应于以下 PLCopen 规则: CP24)。点击 好的 退出对话框。

  9. 点击 构建 → 生成代码

    分析是自动执行的。在消息视图中,报告了两个错误 静态分析消息 类别:

    § SA0035:未使用的输入“iVar_fb1in2”

    § SA0035:未使用的输入“iVar_fb1in3”

  10. 双击消息并注释或删除声明。再次进行代码分析。

    不显示错误消息。

检查是否符合定义的命名约定

  1. 点击 构建 → 静态分析 → 设置。切换到 命名约定 标签。

    您会看到一个树形结构的表,该表分为可扩展的变量类别和程序块。

  2. 展开 变量的前缀类型前缀 类别,并且在 字首 列,指定 I 为了 智力 (14)

    展开 POU 的前缀POU 类型的前缀 类别。在里面 字首列,指定 prog 为了 计划 (122)fb 为了 功能块 (103)

  3. 选择 前缀后的第一个字符应该是大写字母 选项。清除所有其他选项。

  4. 点击 构建 → 静态分析 → 运行静态分析

    错误信息:

    • NC0102:名称“PLC_PRG”无效:需要前缀“prog” 因为 PLC_PRG 没有所需的前缀

    • 前缀后的第一个字符应为大写:'ivar_fb1in2' 因为 ivar_fb1in2 : INT; 是在 fb1

    • NC0014:无效的变量名称 P_fSampleProperty:需要前缀“i” 因为这个整型变量没有所需的前缀。

检查禁用符号

  1. 点击 构建→静态分析→设置.切换到 禁止符号 标签.

    行编辑器允许指定不应在代码中使用的字符串。

  2. 例如,双击空白行并输入无效字符串 PRO 直接地。双击下一个空白行,然后单击 _cds_icon_three_dots.png 按钮打开输入助手。从 标准类型, 选择 真实的.点击 退出对话框。

  3. 点击 构建 → 静态分析 → 运行静态分析

    错误消息 Forbidden symbol 'REAL'Forbidden symbol 'PRO' 显示在消息视图中。双击消息文本可跳转到相关代码行。

显示指标

CODESYS Static Analysis 对代码执行选定的测试,您可以在视图中显示结果。

  1. 点击 构建→静态分析→设置.切换到 指标 标签.

    这些指标 CODESYS Static Analysis 适用于代码列于表中。

  2. 对于本例,激活 输入变量的数量 metric 并指定允许的值范围:下限 1 和上限 2

    例如,激活更多指标 代码大小通话次数

  3. 点击 构建 → 静态分析 → 查看标准指标

    该视图包括一个表格,其中每个表格都有一行 节目单位 的示例程序。对于每个激活的指标,有一列显示测量值。超出设置中定义的值范围的值会以红色突出显示。就本具体示例而言,这至少是 PLC_PRG/输入 字段,因为该 POU 中的输入变量数量大于定义的上限 2