主要内容

本页采用了机器翻译。点击此处可查看英文原文。

Simulink 模型中自定义 C/C++ 代码的覆盖率

当您记录包含受支持的 C/C++ S 函数、MATLAB Function 块、带有 C/C++ 代码的 C Caller 块或集成自自定义 C/C++ 代码进行仿真的 Stateflow® 图表的模型的覆盖率时,Simulink® Coverage™ 会分析 C/C++ 代码的代码覆盖率。对于每个模块或图,覆盖率报告链接到 C/C++ 代码覆盖率的详细信息。

MATLAB Function 模块、C Caller 模块和 Stateflow 图中启用自定义 C/C++ 代码的代码覆盖率

要在您的 Simulink 模型中启用自定义 C/C++ 代码的代码覆盖率:

  1. 在配置参数对话框的左侧窗格中,点击仿真目标

  2. 选择导入自定义代码

  3. 选择启用自定义代码分析

Simulink Coverage 记录 MATLAB Function 模块、C Caller 模块和 Stateflow 图中自定义 C/C++ 代码的代码覆盖率。对于 C Function 块,代码覆盖率报告包括仿真自定义代码下的模块参数对话框中包含的自定义 C/C++ 代码文件。代码覆盖率报告不包括在仿真选项卡的输出开始初始化条件终止字段的模块参数中编写的代码。

S-Function 的代码覆盖率

您可以收集自定义代码覆盖率,并为包含 S-Functions 的模型生成覆盖率报告。启用代码覆盖率的方式取决于您是使用 legacy_code 函数、S-Function Builder 模块还是 mex 函数来构建 S-Function。有关创建 S 函数的更多信息,请参阅 使用 C MEX S-Function 创建模块

使用 legacy_code 函数

  1. 使用代表遗留代码工具属性的字段初始化 MATLAB® 结构体。

    def = legacy_code("initialize")

  2. 要启用模型覆盖率,请启用选项 def.Options.supportCoverage

    def.Options.supportCoverageAndDesignVerifier = true;
  3. 使用 def 生成一个 S-Function。有关示例,请参阅S-Function 的覆盖率

使用 S-Function Builder 模块

  1. S-Function Builder 模块的实例复制到模型中。

  2. 双击该模块以打开 S-Function Builder 对话框。

  3. 编译信息选项卡上,选择启用对覆盖率的支持

使用 slcovmex 函数

如果您使用 mex 函数来编译和链接源文件,请改用 slcovmex 函数。slcovmex 函数编译您的源代码并使其与覆盖率兼容。

该函数具有与 mex 函数相同的语法并采用相同的选项。此外,您还可以提供一些与模型覆盖率相关的选项。有关详细信息,请参阅 slcovmex

生成 S 函数的代码覆盖率报告

  1. 在“配置参数”对话框的左侧窗格中,点击覆盖率

  2. 包括在分析中下,选择 C/C++ S-Function

运行仿真时,覆盖率报告包含模型中 C/C++ S-Function 块的覆盖率指标。对于每个 S-Function 模块,该报告链接到该模块中 C/C++ 代码的详细覆盖率报告。

另请参阅

主题