主要内容

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

这个示例展示了如何使用覆盖率实用工具命令从cvdata对象中提取单个子系统、块或statflow®对象的信息。

示例模型

此示例说明了包含各种支持的覆盖度量的小型模型的覆盖数据的命令行访问。金宝app

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

Open_System('slvnvdemo_cv_small_controller');Open_System('slvnvdemo_cv_small_controller / gain');

生成覆盖数据和HTML报告

使用模拟模型SIM。用一个金宝appsimulink.simulationInput.对象捕获覆盖设置并将其用作输入SIM。在模拟之后,覆盖数据将存储在一个cvdata.对象。

Simin = 金宝appSimulink.simulationInput('slvnvdemo_cv_small_controller');Simin = Simin.SetModelParameter(“可执行”'在');Simin = Simin.SetModelParameter(“CovMetricStructuralLevel”'mcdc');Simin = Simin.SetModelParameter('CovsaveSingletOworkspacevar''在');Simin = Simin.SetModelParameter('covsavename''covdata');Simin = Simin.SetModelParameter('covsope''EntireSystem');Simin = Simin.SetModelParameter('covmetriclockuptable''在');Simin = Simin.SetModelParameter(“CovMetricSignalRange”'在');simout = sim(simin);

处理从a返回的覆盖数据CVSIM使用报告生成命令命令cvhtml.。结果报告是整个模型的模型覆盖的方便表示。

cvhtml('tempfile.html',covdata);

覆盖数据也可在仿真输出对象中提供。

sim
Simout = 金宝appSimulink.simulationOutput:covdata:[1x1 cvdata] tout:[59x1 double] yout:[59x1 double] simulation metaData:[1x1 simulink.simulation metaData] errormessage:[0x0 char]

提取决策覆盖信息

使用决策情况命令以提取单个Simulink块或extendFlow对象的决策覆盖信息。金宝app

以下命令提取整个模型的覆盖阵列。第一个元素是对模型满足的覆盖目标结果的数量;第二个元素是模型的覆盖目标结果的总数。

COV = DefoctionInfo(Covdata,'slvnvdemo_cv_small_controller')百分比= 100 * cov(1)/ cov(2)
COV = 4 6%= 66.6667

使用该块的完整路径检索“饱和度”块的覆盖信息。为该块内的覆盖目标结果的文本描述提供第二个返回参数。

[Blkcov,描述] =决策权(Covdata,'slvnvdemo_cv_small_controller /饱和度')Decordation1 = description.decision(1).text out_1a = description.decision(1).ouctcome(1).text count_1a = description.decision(1).outcome(1).executioncount out_1b = description.decision(1)。结果(2).text count_1b = description.decision(1).outcome(2).executioncount
blkcov = 3 4描述= struct with字段:isfiltered:0 justifiedcoverage:0令人生畏:0筛选:'''''判决:[1x2结构]决策1 ='u> = ll'out_1a ='false'count_1a = 0 out_1b ='true'count_1b = 7.

定量覆盖信息可用于包含或具有覆盖目标结果的层次结构中的每一个结果。仅针对具有覆盖目标结果的对象生成文本描述。例如,调用决策情况对于虚拟子系统增益,并且描述返回值为空。

[Blkcov,描述] =决策权(Covdata,'slvnvdemo_cv_small_controller / gain'的)
blkCov = 1 2 description = struct with fields: isFiltered: 0 jusfiedcoverage: 0 isJustified: 0 filterRationale: "

在某些情况下,物体具有内部覆盖目标,但也包含具有额外覆盖目标的后代。覆盖信息通常包括所有后代,除非忽略后代的第三个参数设置为1。

subsysonlycov = DefoctionInfo(Covdata,'slvnvdemo_cv_small_controller / gain'1)
subsysonlycov = []

决策情况命令还可以使用块句柄、Stateflow id和Stateflow API对象。

blkhandle = get_param('slvnvdemo_cv_small_controller /饱和度''处理')Blkcov = Decomatectinfo(Covdata,BlkHandle)
BLKHANDLE = 31.0020 BLKCOV = 3 4

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

MissingBlkcov = DecomationInfo(Covdata,'slvnvdemo_cv_small_controller / sine1'的)
MissingBlkcov = []

提取条件覆盖信息

条件覆盖范围表示对Boolean表达式的逻辑输入已被评估为True和False。在Si金宝appmulink中,条件是逻辑操作的输入。

ConditionInfo.提取条件覆盖信息的命令非常相似决策情况命令。它通常返回有关对象和所有后代的信息,但可以采用第三个参数,该参数指示应该忽略后代。它还可以返回每个条件的包含描述的第二个输出。

cov = conditioninfo(covdata,'slvnvdemo_cv_small_controller / gain / logic')[COV,DESC] = ConditionInfo(Covdata,'slvnvdemo_cv_small_controller / gain / logic');desc.condition desc.condition (1) (2)
Cov = 2 4 ans = struct with字段:isfiltered:0令人生气:0筛选:''port1'truecnts:59 falsecnts:0 trueOutcomeFilter:[1x1 struct]虚假outcomeFilter:[1x1 struct] trueexecutein:[] FalayexecutionIn:[] ans = struct with字段:isfiltered:0令人生气:0 filterrationale:''文本:'port2'truecnts:0 falsecnts:59 TrueOctcomeFilter:[1x1 struct]虚假outcomeFilter:[1x1 struct] Trueexecutein:[] FalayexecutionIn:[]

提取修改条件/决策覆盖范围信息

修改条件/决策覆盖范围(MCDC)对于布尔表达式内的条件,如果表达式有两个评估,则表示表示独立对,这示出了条件的值独立地影响整个表达的结果。也就是说,对于这些评估,切换条件的值会导致表达结果切换。

在此示例中,为MCDC分析逻辑和块,可以使用该信息使用该信息McDcinfo.命令。此命令使用相同的语法ConditionInfo.决策情况命令。

[cov,desc] = mcdcinfo(covdata,'slvnvdemo_cv_small_controller / gain / logic')desc.condition(1)desc.condition(2)
cov = 0 2 desc = struct with字段:文本:'输出'条件:[1x2 struct] isfiltered:0 filterstrationale:'''''''''''''''s News:0 ans = struct fields:text:'port1'实现:0 truerslt:'(tt)'falserslt:'(ft)'isfiltered:0令人生畏:0 filterrationale:''trueexecudedin:'falayexecutein:[] ans = struct with字段:文本:'port2'实现:0 truerslt:'(tt)'falserslt:'tf'是filtered:0令人生畏:0筛选:''trueexecudedin:[] Falayexecutein:[]

提取查找表覆盖信息

查找表覆盖记录每个插值间隔发生查找的频率。覆盖目的的有效间隔还包括少于最小断点和大于最大断点的值。为了与其他命令的一致性,此信息作为一对计数返回,其中间隔数量和间隔总数。

第二个输出参数导致TableInfo.返回所有插值间隔的执行计数。如果表具有M-by-n输出值,则执行计数以M + 1字节+ 1矩阵返回。

第三个输出参数原因TableInfo.返回输入与断点完全相等的计数。它以向量单元格数组的形式返回,每个维度对应一个表。

[cov,exccnts,brkeq] = tableInfo(covdata,'slvnvdemo_cv_small_controller / gain / gain表'的)
COV = 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 0 0 0 0 0 0 0 0 0 0 4 12 0 0 0 12 0 0 00 0 2 22 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 29 0 0 0 0 0 0 0 0 0 0 2 22 0 0 0 0 0 0 4 22 1823 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 = 1x2单元阵列{10x1 double} {10x1 double}

提取信号范围信息

信号范围度量记录了Simulink块输出和statflow数据对象的最小和最大值。金宝app这SIGRANGEINFO.命令分别返回最小值和最大值的两个返回参数。

SIGRANGEINFO.命令仅适用于执行计算的叶块;否则该命令返回空参数。

[sigmin,sigmax] = sigrangeinfo(covdata,'slvnvdemo_cv_small_controller / gain / gain表'的)% 叶子[sigmin,sigmax] = sigrangeinfo(covdata,'slvnvdemo_cv_small_controller / gain'的)%nonleaf
sigmin = 3.3656 sigmax = 7.6120 sigmin = [] sigmax = []