覆盖面为S-功能

这个例子显示了如何配置与遗留代码工具生成的S-功能可与兼容的覆盖。该模型覆盖工具支持S-功能是:万博1manbetx

  • 与遗留代码工具生成的,与def.Options.万博1manbetxsupportCoverage设置为真正,

  • 使用SFunctionBuilder生成启用覆盖支持万博1manbetx选择在建立信息选项卡,或

  • 编译的slcovmex函数。

打开示例模型

模型的例子sldemo_lct_bus包含用遗留代码工具生成的s函数。s函数具有接收决策、条件和MCDC覆盖的构造。

打开sldemo_lct_bus

配置S-Function以与模型覆盖兼容

文件中的遗留源代码counterbus.hcounterbus.c实现与in相同的算法sldemo_lct_bus / slCounter。遗留代码工具数据结构定义如下:

load_system (“sldemo_lct_bus”);open_system ('sldemo_lct_bus / TestCounter');DEF = legacy_code('初始化');def.SFunctionName =“sldemo_sfun_counterbus”;def.OutputFcnSpec =" counterbusFcn(COUNTERBUS u1[1], int32 u2, COUNTERBUS y1[1], int32 y2[1]) ";def.HeaderFiles = {'counterbus.h'};def.SourceFiles = {“counterbus.c”};

要使s功能与模型覆盖兼容,请启用以下选项:

def.Options.万博1manbetxsupportCoverage= true;

生成和使用编译S-功能legacy_code功能:

legacy_code (“generate_for_sim”def);
###开始编译sldemo_sfun_counterbus mex -I/tmp/Bdoc20a_1326390_179339/tp7005ef03/ex71096464 -c /tmp/ bdoc20a_1326390_1793a0 /tp53ed1d6e_2de3_49ac_be4c_0bab936844a0/counterbus.c -outdir /tmp/ bdoc20a_1326390_1793a0 / tpadaec2b6_3efb_4e48_9a8a_979b4e79c Building with 'gcc'。墨西哥人成功完成。mex -I/tmp/Bdoc20a_1326390_179339/tp7005ef03/ex71096464 /tmp/Bdoc20a_1326390_179339/ tp53ed1d6e_2de3_49ac_be4c_0bab9368a0 /tp6ee7719c_c39d_44c0_9283_d7efd727e36a.c /tmp/Bdoc20a_1326390_179339/ tpadaec2b6_3efb_4e48_9a8a_979ba7e79c /counterbus。o -L/mathworks/devel/bat/Bdoc20a/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldemo_sfun_counterbus Building with 'gcc'墨西哥人成功完成。mex -I/tmp/Bdoc20a_1326390_179339/tp7005ef03/ex71096464 -c /tmp/Bdoc20a_1326390_179339/ tmp/ tmp/Bdoc20a_1326390_179339/tpadaec2b6_3efb_4e48_9a8a_979ba7b4e79c Building with 'gcc'。墨西哥人成功完成。墨西哥人- i / tmp / Bdoc20a_1326390_179339 / tp7005ef03 ex71096464 / tmp / Bdoc20a_1326390_179339 / tp53ed1d6e_2de3_49ac_be4c_0bab936844a0 sldemo_sfun_counterbus.c / tmp / Bdoc20a_1326390_179339 / tp53ed1d6e_2de3_49ac_be4c_0bab936844a0 tp3caec973_c3a4_46e7_ab3d_c274143a0594.c / tmp / Bdoc20a_1326390_179339 / tp53ed1d6e_2de3_49ac_be4c_0bab936844a0 tp1f506600_c591_49be_87f6_ba0b57dbd28c.c / tmp / Bdoc20a_1326390_179339 / tpadaec2b6_3efb_4e48_9a8a_979ba7b4e79c / counterbus。o -L/mathworks/devel/bat/Bdoc20a/build/matlab/bin/glnxa64 -lmwsl_sfcn_cov_bridge -output sldemo_sfun_counterbus Building with 'gcc'墨西哥人成功完成。完成编译sldemo_sfun_counterbus,退出

启用S​​-功能覆盖

要启用覆盖集合S-功能,请选择C / C ++ S-功能在里面配置参数的覆盖面板对话框。可替代地,设置通过命令行选项:

set_param(“sldemo_lct_bus”,“CovMetricSettings”,“电路倍增设备”,“RecordCoverage”,“上”,“CovHtmlReporting”,“上”,'CovSFcnEnable',“上”);

运行模拟并生成覆盖率报告

一旦您启用了覆盖率数据收集,当您模拟模型时,覆盖率信息将被自动记录下来。在模拟结束时,模型覆盖工具生成覆盖信息的HTML报告,该报告显示在内置的MATLAB®web浏览器中。

sim卡(“sldemo_lct_bus”,“StopTime”,“20”);

从覆盖数据对象提取信息

cvdata对象可以被用于提取S-功能覆盖信息,就像任何其他支持的模型元素。万博1manbetx例如,decisioninfo命令从块路径或块句柄中提取覆盖率信息。输出是一个向量,包含单个模型对象的满意结果和总结果。

x = decisioninfo (covdata,'sldemo_lct_bus / TestCounter / sldemo_sfun_counterbus')
4

然后您使用这个覆盖率信息来计算被覆盖模型对象的百分比:

percentCov = 100 *(COV(1)/ COV(2))
percentCov = 75

s功能覆盖与模型覆盖命令完全兼容,例如decisioninfo,conditioninfomcdcinfo