complexityinfo

Извлечение информации о покрытии цикломатической сложности из cvdata объект

Синтаксис

complexity = complexityinfo(cvdo, object)
complexity = complexityinfo(cvdo, object, mode)

Описание

complexity = complexityinfo(cvdo, object) возвращает результаты покрытия сложности от cvdata cvdo объекта для компонента модели object.

complexity = complexityinfo(cvdo, object, mode) возвращает результаты покрытия сложности от cvdata cvdo объекта для компонента модели object для режима симуляции mode.

Входные параметры

cvdo

cvdata объект

object

The object аргумент задает объект в модели или Stateflow® график, который получил Decision Coverage. Допустимые значения для object включать в себя следующее:

Спецификация объектаОписание

BlockPath

Полный путь к модели или блоку

BlockHandle

Указатель на модель или блок

slObj

Указатель на Simulink® Объект API

sfID

Идентификатор Stateflow

sfObj

Указатель на объект Stateflow API из отдельно созданной диаграммы Stateflow

{BlockPath, sfID}

Массив ячеек с путем к диаграмме Stateflow или атомарной субдиаграмме и идентификатором объекта, содержащегося в этом графике или субдиаграмме

{BlockPath, sfObj}

Массив ячеек с путем к диаграмме или субдиаграмме Stateflow и указателю API объекта Stateflow, содержащимся в этом графике или субдиаграмме

{BlockHandle, sfID}

Массив ячеек с указателем на диаграмму Stateflow или атомарную субдиаграмму и идентификатор объекта, содержащегося в этом графике или субдиаграмме

При указании блока s-function допустимые значения для object включать в себя следующее:

Спецификация объектаОписание

{BlockPath, fName}

Массив ячеек с путем к S-Function блоку и именем исходного файла.

{BlockHandle, fName}

Массив ячеек с указателем на S-Function блок и именем исходного файла.

{BlockPath, fName, funName}

Массив ячеек с путем к блоку S-Function, именем исходного файла и именем функции.

{BlockHandle, fName, funName}

Массив ячеек с S-Function указателем на блок, имя исходного файла - имя функции.

Для данных о покрытии, собранных в режиме SIL или PIL, допустимые значения для object включать в себя следующее:

Спецификация объектаОписание

{fileName, funName}

Массив ячеек с именем исходного файла и именем функции.

{Model, fileName}

Массив ячеек с именем модели (или указателем на модель) и именем исходного файла.

{Model, fileName, funName}

Массив ячеек с именем модели (или указателем на модель), именем исходного файла и именем функции.

mode

The mode аргумент задает режим симуляции для покрытия. Допустимые значения для mode включать в себя следующее:

Спецификация объектаОписание

'Normal'

Модель в режиме симуляции Normal.

'SIL' (or 'PIL')

Моделируйте в режиме симуляции Цикле (SIL) или Цикле (PIL).

'ModelRefSIL' (or 'ModelRefPIL')

Моделируйте ссылку в режиме симуляции Программное обеспечение в цикле (SIL) или Процессор в цикле (PIL).

'ModelRefTopSIL' (or 'ModelRefTopPIL')

Моделируйте ссылку в режиме симуляции Цикл (SIL или Цикле (PIL)) с кодовым интерфейсом, установленным на верхнюю модель.

Выходные аргументы

complexity

Если cvdo не содержит результатов цикломатического покрытия сложности для object, complexity пуст.

Если cvdo содержит результаты цикломатического покрытия сложности для object, complexity является двухэлементным вектором вида [total_complexity local_complexity]:

total_complexityЦикломатический охват сложностью для object и его потомков (если таковые имеются)
local_complexityЦикломатический охват сложностью для object

Если object имеет сигналы переменного размера, complexity также содержит переменную сложность.

Примеры

свернуть все

В этом примере показано, как получить информацию о цикломатической сложности для подсистемы Gain slvnvdemo_cv_small_controller модель.

Загрузите slvnvdemo_cv_small_controller модель.

modelName = 'slvnvdemo_cv_small_controller';
load_system(modelName);

Создайте объект спецификации тестирования и включите решение, условие и покрытие MCDC. Затем симулируйте модель с помощью cvsim.

testObj = cvtest(modelName);
testObj.settings.decision = 1;
testObj.settings.condition = 1;
testObj.settings.mcdc = 1;
covData = cvsim(testObj);

Извлечение информации о цикломатической сложности для подсистемы Gain.

gainPath = [modelName,'/Gain'];
gainComplexity = complexityinfo(covData,gainPath)
gainComplexity =

     1     0

Сама подсистема Gain не записывает цикломатическую сложность, но содержимое подсистемы делает. Это можно увидеть в результатах, потому что общая сложность равна 1, которая включает подсистему и всех ее потомков. Напротив, локальная сложность равна 0, что указывает на то, что одна точка сложности происходит от одного из потомков, в этом случае блока Switch.

switchPath = [modelName,'/Gain/Switch'];
switchComplexity = complexityinfo(covData,switchPath)
switchComplexity =

     1     1

Альтернативы

Используйте настройки покрытия для сбора и отображения результатов цикломатического покрытия сложности в отчете о покрытии:

  1. Откройте модель.

  2. В редакторе Simulink выберите Model Settings на вкладке Modeling.

  3. На панели Coverage диалогового окна Параметры конфигурации выберите Enable coverage analysis.

  4. В разделе Coverage metrics выберите MCDC в качестве структурного уровня структурного покрытия.

  5. Щелкните OK, чтобы закрыть диалоговое окно Параметры конфигурации (Configuration Parameters) и сохранить изменения.

  6. Моделируйте модель и просмотрите результаты в отчете HTML.

Введенный в R2011a