使用第三方工具收集代码覆盖率指标
如果模金宝app型®覆盖™安装,您可以收集代码覆盖率度量在software-in-the-loop (SIL)或processor-in-the-loop(公益诉讼)模拟-看收集代码覆盖率数据(金宝app仿真软件覆盖)。在本例中,您可以收集与第三方代码覆盖率工具,即。,BullseyeCoverage或LDRA试验台。你必须安装第三方工具——看到的代码覆盖工具支持金宝app。
这个屏幕截图显示了一个代码覆盖率报告获得通过运行一个SIL仿真代码覆盖工具启用。注释取决于您指定的代码覆盖工具。
在本例中,您在正常模式模拟和测量模型覆盖率在银模式下重复相同的模拟测量代码覆盖率。模型中通过使用超链接覆盖和代码覆盖率报告,您可以比较模型覆盖率和代码覆盖率结果。
银和公益诉讼的仿真例子,看看测试生成的代码与硅和公益诉讼模拟。
初始设置
确保模型是新开的。
模型=“rtwdemo_sil_topmodel”;close_system(模型中,0)open_system(模型)
删除现有的建立文件夹。
buildFolder = RTW.getBuildDir(模型);如果存在(buildFolder.BuildDirectory“dir”)删除文件夹(buildFolder.BuildDirectory“年代”);结束
配置生成的模型覆盖报告。
set_param(模型,“RecordCoverage”,“上”)明确covCumulativeData
建立刺激数据。
T = 0.1;%样品时间[ticks_to_count,重置,counter_mode count_enable,…counter_mode_values_run1 counter_mode_values_run2,…count_enable_values_run1 count_enable_values_run2] =…rtwdemo_sil_topmodel_data (T);
运行一个仿真以正常模式
模型配置为收集模型覆盖率指标。当完成一个模拟,模型覆盖率报告打开。使用的报道显示窗口导航块模型中对应的部分覆盖报告。
counter_mode.signals。值= counter_mode_values_run1;count_enable.signals。值= count_enable_values_run1;set_param(模型,“SimulationMode”,“正常”);
设置仿真数据检查员交互式仿真结果的查看和比较。
金宝appSimulink.sdi.view;金宝appSimulink.sdi.clear;
运行仿真。
simout_normal_run1 = sim(模型,“ReturnWorkspaceOutputs”,“上”);
获取结果。
金宝appSimulink.sdi.createRun (“运行1(正常模式)”,“namevalue”,…{“simout_normal_run1”},{simout_normal_run1});
第二个模拟在正常模式下运行
第一模拟报告显示,实现覆盖率低于100%。用不同的输入信号,增加运行第二个模拟MC / DC覆盖到100%的水平。覆盖率报告注意模型配置为显示累计覆盖在模拟运行。
counter_mode.signals。值= counter_mode_values_run2;count_enable.signals。值= count_enable_values_run2;set_param(模型,“SimulationMode”,“正常”);simout_normal_run2 = sim(模型,“ReturnWorkspaceOutputs”,“上”);金宝appSimulink.sdi.createRun (“运行2(普通模式)”,“namevalue”,…{“simout_normal_run2”},{simout_normal_run2});
配置模型来测量代码覆盖率
运行SIL仿真之前,检查第三方工具的可用性和配置模型收集代码覆盖率。如果第三方工具不可用,该模型使用模型®验证和确认™。金宝app
covToolPath =”;ldraPath = coder.coverage.LDRA.getPath;bullseyePath = coder.coverage.BullseyeCoverage.getPath;coverageSettings = get_param(模型,“CodeCoverageSettings”);coverageSettings.TopModelCoverage =“上”;如果~ isempty (ldraPath) coverageSettings.CoverageTool =“LDRA试验台”;elseif~ isempty (bullseyePath) coverageSettings.CoverageTool =“BullseyeCoverage”;其他的coverageSettings.CoverageTool =“没有”;结束set_param(模型,“CodeCoverageSettings”,coverageSettings);
运行模拟SIL模式
正常模式模拟产生覆盖率度量模型。SIL模拟,您可以应用相同的输入刺激信号生成的代码并测量代码覆盖率。
第一个模拟SIL模式下运行。
counter_mode.signals。值= counter_mode_values_run1;count_enable.signals。值= count_enable_values_run1;set_param(模型,“SimulationMode”,“software-in-the-loop”);set_param(模型,“CodeExecutionProfiling”,“关闭”);set_param(模型,“CodeProfilingInstrumentation”,“关闭”);simout_sil_run1 = sim(模型,“ReturnWorkspaceOutputs”,“上”);金宝appSimulink.sdi.createRun (“运行1 (SIL)模式)”,“namevalue”,…{“simout_sil_run1”},{simout_sil_run1});
# # #开始构建过程模型:rtwdemo_sil_topmodel # # #成功完成构建过程模型:rtwdemo_sil_topmodel # # #准备开始SIL模拟……建筑与gcc。墨西哥人成功完成。# # #更新代码生成报告与SIL文件…# # #起始SIL仿真组件:rtwdemo_sil_topmodel # # #停止SIL模拟组件:rtwdemo_sil_topmodel # # #代码覆盖分析完成
第二模拟SIL模式下运行。
counter_mode.signals。值= counter_mode_values_run2;count_enable.signals。值= count_enable_values_run2;set_param(模型,“SimulationMode”,“software-in-the-loop”);set_param(模型,“CodeExecutionProfiling”,“关闭”);set_param(模型,“CodeProfilingInstrumentation”,“关闭”);simout_sil_run2 = sim(模型,“ReturnWorkspaceOutputs”,“上”);金宝appSimulink.sdi.createRun (“运行2 (SIL)模式)”,“namevalue”,…{“simout_sil_run2”},{simout_sil_run2});
# # #开始构建过程模型:rtwdemo_sil_topmodel # # #为“rtwdemo_sil_topmodel”所生成的代码是最新的,因为没有结构,参数或代码替换库的变化被发现。# # #成功完成构建过程模型:rtwdemo_sil_topmodel # # #准备开始SIL模拟……# # #起始SIL仿真组件:rtwdemo_sil_topmodel # # #停止SIL模拟组件:rtwdemo_sil_topmodel # # #代码覆盖分析完成
当完成一个模拟,在命令窗口中单击该链接打开并查看代码覆盖率报告累计代码覆盖率结果。链接只有如果你有第三方工具安装。
使用超链接的代码覆盖率报告去方块图中相应的位置。然后,通过使用覆盖显示窗口,您可以打开相应的部分模型的覆盖率报告。比较模型覆盖率和代码覆盖率结果。
仿真数据督察自动打开,允许交互式查看和分析结果。使用对比、检查窗格确认银和正常模式运行的记录信号是相同的。
结束语
在本例中,您:
收集在正常模式仿真模型覆盖率度量。
SIL模拟期间收集的代码覆盖率。
代码覆盖率和模型覆盖报告之间的导航。
反复核对指标报告。