主要内容

从覆盖率数据中提取的详细信息

这个例子展示了如何使用覆盖率工具命令为单个子系统中提取信息,阻止或Stateflow®对象从cvdata对象。

示例模型

这个例子说明了命令行访问覆盖率数据的一个小模型,包含各种支持覆盖度量方面的问题。金宝app

使用以下命令打开“slvnvdemo_cv_small_controller”模型及其子系统“增益”。

open_system (“slvnvdemo_cv_small_controller”);open_system (“slvnvdemo_cv_small_controller /增益”);

生成覆盖率数据和一个HTML报告

模拟模型的使用sim卡。使用一个金宝appSimulink.SimulationInput对象捕捉范围设置和使用它作为输入sim卡。仿真后,覆盖率数据将存储在一个cvdata对象。

思敏= Simu金宝applink.SimulationInput (“slvnvdemo_cv_small_controller”);思敏= simIn.setModelParameter (“CovEnable”,“上”);思敏= simIn.setModelParameter (“CovMetricStructuralLevel”,“MCDC”);思敏= simIn.setModelParameter (“CovSaveSingleToWorkspaceVar”,“上”);思敏= simIn.setModelParameter (“CovSaveName”,“covData”);思敏= simIn.setModelParameter (“CovScope”,“EntireSystem”);思敏= simIn.setModelParameter (“CovMetricLookupTable”,“上”);思敏= simIn.setModelParameter (“CovMetricSignalRange”,“上”);simOut = sim(思);

过程返回的覆盖率数据cvsim命令报告生成的命令cvhtml。生成的报告是一个方便的表示模型覆盖整个模型。

cvhtml (“tempfile.html”,covData);

覆盖率数据也可以在模拟输出对象。

simOut
simOut =仿金宝app真软件。SimulationOutput: covData: [1 x1 cvdata]吹捧:[59 x1双]你:[59 x1双]SimulationMetadata: [1 x1仿真软件。金宝appSimulationMetadata] ErrorMessage (0 x0 char):

提取决定覆盖信息

使用decisioninfo命令提取决定个人仿真软件模块或Stateflow对象的覆盖率信息。金宝app

下面的命令提取一系列覆盖整个模型。第一个元素是客观报道的数量模型结果满意;第二个元素的总数是覆盖目标结果为模型。

x = decisioninfo (covData,“slvnvdemo_cv_small_controller”)= 100 *浸百分比(1)/浸(2)
x = 4 = 66.6667 6%

检索“饱和”块使用覆盖率信息块的完整路径。为文本提供第二个返回参数描述客观报道的结果块中。

[blkCov、描述]= decisioninfo (covData“slvnvdemo_cv_small_controller /饱和度”)decision1 = description.decision (1)。text out_1a = description.decision (1) .outcome (1)。text count_1a = description.decision (1) .outcome (1) .executionCount out_1b = description.decision (1) .outcome (2)。text count_1b = description.decision (1) .outcome .executionCount (2)
blkCov = 3 = 4描述结构体字段:isFiltered: 0 justifiedCoverage: 0 isJustified: 0 filterRationale:“决定:[1 x2 struct] decision1 = U > =我的out_1a = '假' count_1a = 0 out_1b = '真的' count_1b = 7

定量覆盖率信息可供每个结果的层次结构,其中包含或覆盖的目标结果。生成文本描述的对象只有报道客观结果。例如,调用decisioninfo为虚拟子系统,和描述返回值是空的。

[blkCov、描述]= decisioninfo (covData“slvnvdemo_cv_small_controller /增益”)
blkCov = 1 = 2描述结构体字段:isFiltered: 0 justifiedCoverage: 0 isJustified: 0 filterRationale:“

在某些情况下,一个对象有内部覆盖目标但是还包含额外的后裔覆盖的目标。覆盖率信息通常包括所有后代,除非忽略后裔的第三个参数是设置为1。

subsysOnlycov = decisioninfo (covData,“slvnvdemo_cv_small_controller /增益”,1)
subsysOnlycov = []

decisioninfo命令还与块处理、Stateflow id和Stateflow API对象。

blkHandle = get_param (“slvnvdemo_cv_small_controller /饱和度”,“处理”)blkCov = decisioninfo (covData blkHandle)
blkHandle = 34.0011 blkCov = 3 4

如果一个对象没有决定覆盖,命令返回空的输出。

missingBlkCov = decisioninfo (covData,“slvnvdemo_cv_small_controller / Sine1”)
missingBlkCov = []

提取条件覆盖率信息

逻辑输入条件覆盖率表明如果布尔表达式已经评估真假。在仿真金宝app软件中,输入逻辑操作条件。

conditioninfo命令提取条件覆盖率信息非常相似decisioninfo命令。它通常返回一个对象的信息及其所有的后代,但可以把第三个参数表明后代是否应该被忽略。它还可以返回第二个输出包含每个条件的描述。

x = conditioninfo (covData,“slvnvdemo_cv_small_controller /增加/逻辑”)(x, desc) = conditioninfo (covData,“slvnvdemo_cv_small_controller /增加/逻辑”);desc.condition desc.condition (1) (2)
x = 2 4 ans =结构体字段:isFiltered: 0 isJustified: 0 filterRationale:“文本:“端口1”trueCnts: 59 falseCnts: 0 trueOutcomeFilter: [1 x1 struct] falseOutcomeFilter: [1 x1 struct] trueExecutedIn: [] falseExecutedIn: [] ans =结构体字段:isFiltered: 0 isJustified: 0 filterRationale:“文本:“端口2”trueCnts: 0 falseCnts: 59 trueOutcomeFilter: [1 x1 struct] falseOutcomeFilter: [1 x1 struct] trueExecutedIn: [] falseExecutedIn: []

覆盖率信息提取修改条件/决定

修改条件/决定覆盖(MCDC)是一个条件满足在一个布尔表达式,如果有两个表达式的评价,代表一个独立的两,这说明条件独立的价值影响整个表达式的结果。这些评估,也就是说,切换条件的值会导致表达式结果切换。

在这个例子中,逻辑分析和块MCDC,这些信息可以提取使用mcdcinfo命令。这个命令使用相同的语法conditioninfodecisioninfo命令。

[x, desc] = mcdcinfo (covData,“slvnvdemo_cv_small_controller /增加/逻辑”)desc.condition (1) desc.condition (2)
x = 0 2 desc =结构体字段:文字:“输出”条件:[1 x2 struct] isFiltered: 0 filterRationale:“justifiedCoverage: 0 ans =结构体字段:文本:端口1的实现:0 trueRslt:“(TT)”falseRslt:“(英尺)”isFiltered: 0 isJustified: 0 filterRationale:“trueExecutedIn: [] falseExecutedIn: [] ans =结构体字段:文字:端口2的实现:0 trueRslt:“(TT)”falseRslt:“助教”isFiltered: 0 isJustified: 0 filterRationale:“trueExecutedIn: [] falseExecutedIn: []

提取查找表覆盖率信息

查找表覆盖记录查找每个插值区间出现的频率。有效间隔覆盖的目的还包括值小于最小断点和值大于最大的断点。的一致性与其他命令,这些信息作为一对返回执行的间隔数的数量和间隔的总数。

第二个输出参数的原因tableinfo返回执行计算插值区间。如果表有M×n的输出值,返回执行计数在一个M + 1)×(n + 1的矩阵。

第三个输出参数的原因tableinfo返回输入的数量等于断点。这是返回单元阵列的向量,每个维度表中的一个。

[x, execCnts brkEq] = tableinfo (covData,“slvnvdemo_cv_small_controller /增益/增益表”)
x = 23 121 execCnts = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 12 14 10 2 0 0 0 0 0 4 12 0 0 0 12 0 0 0 0 0 22 12 0 0 0 0 0 0 0 0 0 21 0 0 0 0 0 59 0 0 0 0 0 0 0 0 0 21日29日0 0 0 0 7 28日0 0 0 6 0 0 0 0 0 4 28日22 18 23 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 brkEq = 1 x2单元阵列{10 x1双}{10 x1双}

提取信号范围信息

信号范围指标记录的最小和最大价值模型块输出和Stateflow数据对象。金宝app的sigrangeinfo命令返回两个回归参数的最小值和最大值,分别。

sigrangeinfo命令只适用于叶块进行计算;否则,命令返回空的参数。

[sigMin, sigMax] = sigrangeinfo (covData,“slvnvdemo_cv_small_controller /增益/增益表”)%的叶子[sigMin, sigMax] = sigrangeinfo (covData,“slvnvdemo_cv_small_controller /增益”)% Nonleaf
sigMin = 3.3656 sigMax = 7.6120 sigMin = [] sigMax = []