Main Content

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

软件在环代码覆盖率

此示例展示如何使用软件在环(SIL) 模式从模型参考收集代码覆盖率度量。

生成代码覆盖率结果

模型 slvnvdemo_counter_harness 是一个框架模型,它使用 Signal Editor 模块来指定对 slvnvdemo_counter 模型的模型引用的输入。

该模型配置为覆盖率,但仿真模式设置为 Normal。在普通仿真模式下,您只能收集模型覆盖率数据。要收集软件在环覆盖率,请使用以下方法之一:

  • 从模型参考中,在 Model 模块的模块参数中设置引用模型的仿真模式。点击 Model 模块 slvnvdemo_counter,然后点击 Model 模块选项卡。将仿真模式设置为 Software-in-the-Loop (SIL)。模块图标的角变为黑色,并且模块上的模型名称下出现 (SIL)。

App 标签中,点击覆盖率分析器。然后,在覆盖率选项卡上,点击分析覆盖率。Simulink Coverage® 收集使用 SIL 仿真模式的引用子系统生成的代码的覆盖率。

  • 使用 SIL/PIL 管理器应用程序运行仿真。当您想要收集顶层模型和引用模型的覆盖率时,或者当覆盖率分析范围设置为 Entire System 时,请使用这种方法。在应用程序选项卡上,点击 SIL/PIL 管理器。点击运行验证。Simulink Coverage® 收集 SIL/PIL 仿真生成的代码的覆盖率。请注意,如果您想收集顶层模型的覆盖率,分析覆盖率按钮始终运行普通模式仿真,并且不会生成代码覆盖率结果。

有关配置覆盖率模型的更多信息,请参阅指定覆盖率选项

在覆盖率详细信息中查看覆盖率结果

当仿真完成后,Simulink® 打开代码覆盖率详细信息窗格。每次只能查看其中一个窗格。代码窗格默认打开,包含从模型生成的代码的详细信息。在代码窗格的底部,点击覆盖率详细信息标签。

窗格显示消息 Coverage was not recorded for slvnvdemo_counter_harness出现此消息的原因是,该模型配置为收集模型参考 slvnvdemo_counter 的覆盖率,而不是顶层模型 slvnvdemo_counter_harness 的覆盖率。点击模型模块 slvnvdemo_counter 以查看此模型参考的覆盖率结果。

滚动到覆盖率详细信息窗格顶部即可看到 SIL 模式覆盖率摘要。

点击详细信息可查看覆盖率报告的详细信息部分。本节列出了按源文件组织的代码覆盖率、这些文件调用的函数以及构成这些函数的各个覆盖率目标结果。

在模型中,点击名为 limitSwitch 模块以查看报告的按模型对象的详细信息部分,其中列出了每个模型对象的表达式和函数。例如,Switch 模块 limit 在函数 slvnvdemo_counter.c 的第 48、50 和 53 行获得决策和语句代码覆盖率,并且覆盖的表达式是 rtb_inputGElower

在代码视图中查看覆盖率结果

您还可以在 Embedded Coder® 创建的代码视图中查看覆盖率结果。在覆盖率详细信息窗格的底部,点击代码

每一行代码都有一个注释,表明是否具有全覆盖。例如第 40 行有以下注释:

  • 语句 rtb_inputGElower 下方的 ^S 以绿色显示,表示该行已执行并受到完整的语句覆盖率。

  • 条件 rtb_input >= *rtu_lower 下方的 ^tf 以绿色显示,表示条件的 true false case 均已执行,并且条件具有完全条件覆盖率。

有关代码视图注释的更多信息,请参阅Code Coverage for Models in Software-in-the-Loop (SIL) Mode and Processor-in-the-Loop (PIL) Mode (Embedded Coder)

创建并查看独立覆盖率报告

要创建独立的代码覆盖率报告,请在覆盖率选项卡中点击生成报告。代码覆盖率报告包含显示生成的代码的部分。

每个代码语句和逻辑模块都包含一个注释或一组注释,用于描述生成代码的源模块。每个评论还包含一个链接,可将您带回模型并帮助进行模型到代码映射。

相关主题