exponenta event banner

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

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

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

BlockPath

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

BlockHandle

Маркер перемещения к модели или блоку

slObj

Обращаться к объекту API Simulink ®

sfID

Идентификатор потока состояний

sfObj

Дескриптор объекта API Stateflow из одномоментной диаграммы Stateflow

{BlockPath, sfID}

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

{BlockPath, sfObj}

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

{BlockHandle, sfID}

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

При указании S-функционального блока допустимые значения для 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

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

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

'Normal'

Модель в режиме нормального моделирования.

'SIL' (or 'PIL')

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

'ModelRefSIL' (or 'ModelRefPIL')

Ссылка на модель в режиме моделирования ПО в контуре (SIL) или процессора в контуре (PIL).

'ModelRefTopSIL' (or 'ModelRefTopPIL')

Ссылка на модель в режиме моделирования Software-in-the-Loop (SIL или Processor-in-the-Loop (PIL)) с интерфейсом кода, установленным на модель верхнего уровня.

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

complexity

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

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

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

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

Примеры

свернуть все

В этом примере показано, как получить информацию о цикломатической сложности для подсистемы усиления 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);

Получение информации о цикломатической сложности для подсистемы усиления.

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

     1     0

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

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

     1     1

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

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

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

  2. В редакторе Simulink выберите «Параметры модели» на вкладке «Моделирование».

  3. На панели Покрытие диалогового окна Параметры конфигурации выберите Включить анализ покрытия.

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

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

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

Представлен в R2011a