cv.cvdatagroup 类
命名空间: cv
cvdata
对象的集合
描述
cv.cvdatagroup
类的对象包含一个或多个 cvdata
对象。每个 cvdata
对象包含模型层次结构中模型的覆盖率结果。cv.cvdatagroup
不能包含多个具有相同模型名称、仿真模式和版本的 cvdata
对象。
当您在启用覆盖率的情况下仿真包含模型引用的模型时,或者当您的模型使用外部代码文件并且您选择了外部文件进行覆盖率分析时,Simulink® Coverage™ 会创建一个 cv.cvdatagroup
对象。使用 get
和 getAll
类方法来检索模型参考层次结构中特定模型的覆盖率数据。使用 allNames
方法检索 cvdata
对象名称,以便与 get
类方法一起使用。
cv.cvdatagroup
类是 handle
类。
创建对象
描述
输入参量
覆盖率数据,指定为一个或多个 cvdata
对象。
数据类型: cvdata
属性
对象名称,指定为字符数组。
示例: cvdg.name = 'myDataGroup';
属性:
GetAccess | public |
SetAccess | public |
数据类型: char
方法
allNames | 获取 cvdata 对象中 cv.cvdatagroup 对象的名称 |
allSimulationModes | 获取与 cvdata 中的 cv.cvdatagroup 对象相关的所有仿真模式的名称 |
get | 在 cvdata 中获取指定的 cvdatagroup 对象 |
getAll | 获取 cvdata 对象中的所有 cvdatagroup 对象 |
add | 将 cvdata 对象添加到 cv.cvdatagroup 对象中 |
这些方法专门为此类中的对象提供标准 MATLAB® 运算符和函数。
| 对与每个 如果覆盖率数据对象具有相同的模型名称、仿真模式和版本,则它们匹配。 如果 |
| 返回左操作数和右操作数中的覆盖率数据之间的集合差异。返回的 |
| 返回两个 |
示例
此示例显示如何从 cv.cvdatagroup
对象中检索指定的覆盖率数据对象、所有覆盖率数据对象或所有覆盖率数据对象名称。
加载示例模型。
modelName = 'slvnvdemo_eml_model_coverage_demo';
load_system(modelName);
使用 Simulink.SimulationInput
类来设置启用覆盖率的仿真场景。
simIn = Simulink.SimulationInput(modelName); simIn = setModelParameter(simIn,'CovEnable','on'); simIn = setModelParameter(simIn,'CovMetricStructuralLevel','MCDC'); simIn = setModelParameter(simIn,'CovSaveSingleToWorkspaceVar','on'); simIn = setModelParameter(simIn,'CovSaveName','covData'); simIn = setModelParameter(simIn,'CovSaveOutputData','off');
通过将 SimulationInput
对象传递给 sim
函数来仿真模型,然后从 SimulationOutput
对象中检索覆盖率数据。
simOut = sim(simIn); covData = simOut.covData
covData = ... cv.cvdatagroup slcoverageExternalFile (simulation mode: Normal) slvnvdemo_eml_model_coverage_demo (simulation mode: Normal)
示例模型包含一个调用外部 MATLAB 函数的 MATLAB® Function 模块。因为 Simulink Coverage 在单独的 cvdata
对象中返回 MATLAB 函数的覆盖率数据,所以 sim
返回一个 cv.cvdatagroup
对象,该对象包含模型和 MATLAB 函数的覆盖率结果。
要确定 cvdata
内每个 cv.cvdatagroup
对象关联的名称,请使用类方法 allNames
。
covDataNames = allNames(covData)
covDataNames = 2×1 cell array {'slcoverageExternalFile' } {'slvnvdemo_eml_model_coverage_demo'}
cv.cvdatagroup
包含模型以及 MATLAB 函数的覆盖率结果。
要检索模型的覆盖率数据,请使用 get
类方法。
modelCovData = get(covData,modelName)
modelCovData = ... cvdata version: (R2025a) id: 882 type: TEST_DATA test: cvtest object rootID: 884 checksum: [1x1 struct] modelinfo: [1x1 struct] startTime: 01-Feb-2025 15:48:16 stopTime: 01-Feb-2025 15:48:16 intervalStartTime: intervalStopTime: simulationStartTime: 0 simulationStopTime: 1 filter: simMode: Normal
要检索模型和外部文件的覆盖率数据,请使用 getAll
类方法。
covDataArray = getAll(covData)
covDataArray = 2×1 cell array {1×1 cvdata} {1×1 cvdata}
此示例显示如何使用两个 cvdatagroup
对象创建一个 cvdata
对象。
记录 slvnvdemo_cv_small_controller
的覆盖率。
model_1 = 'slvnvdemo_cv_small_controller';
load_system(model_1)
cvdo1 = cvsim(model_1);
记录 slvnvdemo_powerwindow_controller
的覆盖率。
model_2 = 'slvnvdemo_powerwindow_controller';
load_system(model_2)
cvdo2 = cvsim(model_2);
创建一个包含两个 cv.cvdatagroup
对象的 cvdata
对象。
cvdg = cv.cvdatagroup(cvdo1,cvdo2);
此示例演示了如何使用 +
运算符合并 cv.cvdatagroup
对象。
加载模型。
modelName = "slcovDataGroup";
load_system(modelName);
通过创建一个 Simulink.SimulationInput
对象,为覆盖率分析准备模型。然后,通过将 CovSaveSingleToWorkspaceVar
参数设置为 on
,使覆盖率数据在 MATLAB® 工作区中可访问。
simIn = Simulink.SimulationInput(modelName); simIn = setModelParameter(... simIn,"CovSaveSingleToWorkspaceVar","on");
该模型的需求是需要在 MATLAB 工作区中设置四个变量。对于首次运行:
a = 1; b = 0; c = 1; d = 0;
仿真模型并将覆盖率数据赋给一个名为 covData1
的变量。由于 slcovDataGroup
模型调用了外部的 MATLAB 函数,Simulink® Coverage™ 会将覆盖结果返回为 cv.cvdatagroup
对象。其中一个 cvdata
目标包含模型覆盖率结果,另一个包含外部 MATLAB 文件的覆盖率结果。
simOut1 = sim(simIn); covData1 = simOut1.covdata; class(covData1)
ans = 'cv.cvdatagroup'
使用 decisioninfo
检查外部 MATLAB 函数 slcoverageExternalFile
的决策覆盖率。
[decCov1,decInfo] = decisioninfo(covData1,"slcoverageExternalFile")
decCov1 = 2 3 decInfo = struct with fields: isFiltered: 0 justifiedCoverage: 0 isJustified: 0 filterRationale: '' decision: [1×2 struct]
在外部 MATLAB 文件中,if
语句的 false 情况未执行,且缺少决策覆盖率。您可以通过使用 decisioninfo
的选项描述输出功能来验证这一点。例如,第二个决策代表了 if 语句。
decInfo.decision(2)
ans = struct with fields: text: 'if (z)' filterRationale: '' isFiltered: 0 isJustified: 0 outcome: [1×2 struct]
该决策的第一个结果代表了错误案例,其执行次数为零。
decInfo.decision(2).outcome(1)
ans = struct with fields: text: 'false' executionCount: 0 executedIn: [] isFiltered: 0 isJustified: 0 filterRationale: ''
为了满足此决策,将变量 c
设置为零,并再次运行覆盖率分析。
c = 0; simOut2 = sim(simIn); covData2 = simOut2.covdata;
使用 +
运算符对两次运行的覆盖率进行聚合。然后再次检查决策覆盖率。
covDataTot = covData1 + covData2;
decCovTot = decisioninfo(covDataTot,"slcoverageExternalFile")
decCovTot = 3 3
在聚合的 cv.cvdatagroup
对象中,外部 MATLAB 文件 slcoverageExternalFile
现已达到 100% 决策覆盖率。
版本历史记录
在 R2007b 中推出
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)