Main Content

mcdcinfo

Retrieve modified condition/decision coverage information from cvdata object

Description

covInfo = mcdcinfo(cvdo,modelObject) returns modified condition decision coverage (MCDC) results from the cvdata object cvdo for the model component specified by modelObject.

covInfo = mcdcinfo(cvdo, modelObject, simMode) returns MCDC results from the cvdata object cvdo for the model component specified by modelObject for the simulation mode simMode.

covInfo = mcdcinfo(cvdo,modelObject,ignoreDescendants) returns MCDC results for modelObject, depending on the value of ignoreDescendants.

[covInfo, description] = mcdcinfo(cvdo,modelObject) returns MCDC results and text descriptions of each condition/decision in modelObject.

example

Examples

collapse all

Collect MCDC coverage for the slvnvdemo_cv_small_controller model and determine the percentage of MCDC coverage collected for the Logic block in the Gain subsystem:

mdl = 'slvnvdemo_cv_small_controller';
openExample(mdl);
open_system(mdl);
%Create test specification object
testObj = cvtest(mdl)
%Enable MCDC coverage
testObj.settings.mcdc = 1;
%Simulate model
data = cvsim(testObj)
%Retrieve MCDC results for Logic block
blk_handle = get_param([mdl, '/Gain/Logic'], 'Handle');
cov = mcdcinfo(data, blk_handle)
%Percentage of MCDC outcomes covered
percent_cov = 100 * cov(1) / cov(2)

Input Arguments

collapse all

Coverage data, specified as a cvdata object.

Data Types: cvdata

Model object, specified as a character array, string array, Simulink handle, Stateflow ID, or cell array.

To specify a model object, such as a block or a Stateflow chart, use one of these formats:

Object SpecificationDescription

BlockPath

Full path to a model or block

BlockHandle

Handle to a model or block

slObj

Handle to a Simulink API object

sfID

Stateflow ID

sfObj

Handle to a Stateflow API object from a singly instantiated Stateflow chart

{BlockPath, sfID}

Cell array with the path to a Stateflow chart or atomic subchart and the ID of an object contained in that chart or subchart

{BlockPath, sfObj}

Cell array with the path to a Stateflow chart or subchart and a Stateflow object API handle contained in that chart or subchart

{BlockHandle, sfID}

Cell array with a handle to a Stateflow chart or atomic subchart and the ID of an object contained in that chart or subchart

To specify an S-Function block or its contents, use one of these formats:

Object SpecificationDescription

{BlockPath, fName}

Cell array with the path to an S-Function block and the name of a source file

{BlockHandle, fName}

Cell array with an S-Function block handle and the name of a source file

{BlockPath, fName, funName}

Cell array with the path to an S-Function block, the name of a source file, and a function name

{BlockHandle, fName, funName}

Cell array with an S-Function block handle, the name of a source file, and a function name

To specify a code coverage result, such as coverage data collected during software-in-the-loop (SIL) or processor-in-the-loop (PIL) analysis, use one of these formats:

Object SpecificationDescription

{fileName, funName}

Cell array with the name of a source file and a function name

{Model, fileName}

Cell array with a model name or model handle and the name of a source file

{Model, fileName, funName}

Cell array with a model name or model handle, the name of a source file, and a function name

Data Types: char | string | cell | Stateflow.State | Stateflow.Transition

Simulation mode during coverage analysis, specified as one of these options:

Object SpecificationDescription

"Normal"

Model in normal simulation mode.

"SIL" or "PIL"

Model in software-in-the-loop (SIL) or processor-in-the-loop (PIL) simulation mode.

"ModelRefSIL" or "ModelRefPIL"

Model reference in SIL or PIL simulation mode.

"ModelRefTopSIL" or "ModelRefTopPIL"

Model reference in SIL or PIL simulation mode with the code interface set to top model.

Data Types: char | string

Whether to ignore descendants in coverage results, specified as a numeric or logical 1 (true) or 0 (false), where:

  • 0 (false) includes coverage results of descendant objects.

  • 1 (true) ignores coverage results of descendant objects.

Data Types: single | double | logical

Output Arguments

collapse all

Coverage information, returned as a two-element array of the form [covered_outcomes,total_outcomes] if cvdo contains MCDC data, or an empty array if it does not.

covered_outcomesNumber of MCDC outcomes satisfied for modelObject
total_outcomesTotal number of MCDC outcomes for modelObject

Data Types: double

MCDC coverage description, returned as a structure array with the following fields:

Block exclusion flag, returned as 1 if the block is excluded and 0 if it is not.

Data Types: double

Block coverage filter rationale, returned as a character array.

Data Types: char

Number of justified coverage objective outcomes, returned as a scalar double.

Data Types: double

Description of the measured objective, returned as a character array.

Data Types: char

Information for individual MCDC outcomes, returned as a structure with the following fields:

MCDC outcome exclusion flag, returned as 1 if the MCDC outcome is excluded or 0 if it is not.

Data Types: double

MCDC outcome justification flag, returned as 1 if the MCDC outcome is justified or 0 if it is not.

Data Types: double

Coverage filter rationale, returned as a character array. If a filter is not applied, or the applied filter does not contain filter rules, filterRationale is returned as an empty array.

Data Types: char

Description of the MCDC outcome, returned as a character array.

Data Types: char

MCDC outcome flag, returned as 1 if the MCDC outcome is fully satisfied, and 0 if it is not. The MCDC outcome is fully satisfied if each condition independently affects the decision outcome.

Data Types: double

Condition values that achieve the true MCDC result, returned as a

Data Types: double

Number of time steps the condition is false, returned as a scalar.

Data Types: double

Aggregated coverage test case traceability information, returned as a structure array. If your coverage data does not contain aggregated results from multiple simulations, trueExecutedIn is an empty array. If your coverage data contains aggregated results, trueExecutedIn indicates which test runs executed the true condition outcome and has the following fields:

uniqueIdUnique identifier for the cvdata object created by the test case that executed this condition outcome, returned as a character array.
analyzedModelThe name of the model analyzed, returned as a character array.
descriptionThe test case description, returned as a character array.
dateThe date and time of the simulation that created the cvdata object, returned as a character array.
traceLabelThe short name of the test case, returned as a character array.
testRunInfoTest details, returned as a structure array.
testRunInfo.runidThe identifier of the run that generated the coverage result, returned as a scalar double.
testRunInfo.runNameThe name of the test case that generated the coverage result, returned as a character array.
testRunInfo.testIdIdentifying data for the test case that generated the coverage result, returned as a structure array.
testRunInfo.testId.uuidThe unique identifier for the test case that generated the coverage result, returned as a character array.
testRunInfo.testId.contextType

The test context in which the coverage result was obtained, returned as one of these values:

'RE' for the Coverage Results Explorer

'ST' for the Test Manager in Simulink Test™

Data Types: struct

Aggregated coverage test case traceability information, returned as a structure array. If your coverage data does not contain aggregated results from multiple simulations, falseExecutedIn is an empty array. If your coverage data contains aggregated results, falseExecutedIn indicates which test runs executed the false condition outcome and has the following fields:

uniqueIdUnique identifier for the cvdata object created by the test case that executed this condition outcome, returned as a character array.
analyzedModelThe name of the model analyzed, returned as a character array.
descriptionThe test case description, returned as a character array.
dateThe date and time of the simulation that created the cvdata object, returned as a character array.
traceLabelThe short name of the test case, returned as a character array.
testRunInfoTest details, returned as a structure array.
testRunInfo.runidThe identifier of the run that generated the coverage result, returned as a scalar double.
testRunInfo.runNameThe name of the test case that generated the coverage result, returned as a character array.
testRunInfo.testIdIdentifying data for the test case that generated the coverage result, returned as a structure array.
testRunInfo.testId.uuidThe unique identifier for the test case that generated the coverage result, returned as a character array.
testRunInfo.testId.contextType

The test context in which the coverage result was obtained, returned as one of these values:

'RE' for the Coverage Results Explorer

'ST' for the Test Manager in Simulink Test

Data Types: struct

Data Types: double

Data Types: struct

Alternatives

Use the coverage settings to collect MCDC coverage for a model:

  1. Open the model.

  2. In the Model Editor, select Model Settings on the Modeling tab.

  3. On the Coverage pane of the Configuration Parameters dialog box, select Enable coverage analysis.

  4. Under Coverage metrics, select MCDC as the structural coverage level.

  5. Click OK to close the Configuration Parameters dialog box and save your changes.

  6. Simulate the model by clicking the Run button and review the results.

Version History

Introduced in R2006b