complexityinfo

Получите цикломатическую информацию о покрытии сложности из cvdata объект

    Описание

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

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

    Примеры

    свернуть все

    В этом примере показано, как получить цикломатическую информацию о сложности для подсистемы Усиления 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, указывая, что один момент сложности наступает от одного из потомков, в этом случае блок switch.

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

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

    свернуть все

    Данные о покрытии в виде cvdata объект.

    Типы данных: cvdata

    Объект модели в виде символьного массива, массива строк, указателя Simulink, ID Stateflow или массива ячеек.

    Задавать объект модели, например, блок или диаграмма Stateflow, использование один из следующих форматов:

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

    BlockPath

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

    BlockHandle

    Обработайте к модели или блоку

    slObj

    Обработайте к объекту Simulink API

    sfID

    ID Stateflow

    sfObj

    Обработайте к объекту Stateflow API от отдельно инстанцированной диаграммы Stateflow

    {BlockPath, sfID}

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

    {BlockPath, sfObj}

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

    {BlockHandle, sfID}

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

    Чтобы задать Блок s-function или его содержимое, используйте один из следующих форматов:

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

    {BlockPath, fName}

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

    {BlockHandle, fName}

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

    {BlockPath, fName, funName}

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

    {BlockHandle, fName, funName}

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

    Задавать результат покрытия кода, например, данные о покрытии, собранные во время программного обеспечения в цикле (SIL) или процессор в цикле (PIL) анализ, использование один из следующих форматов:

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

    {fileName, funName}

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

    {Model, fileName}

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

    {Model, fileName, funName}

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

    Типы данных: char | string | cell | Stateflow.State | Stateflow.Transition

    Режим Simulation во время анализа покрытия в виде одного из следующего:

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

    'Normal'

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

    'SIL' (or 'PIL')

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

    'ModelRefSIL' (or 'ModelRefPIL')

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

    'ModelRefTopSIL' (or 'ModelRefTopPIL')

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

    Типы данных: char | string

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

    свернуть все

    Цикломатическая сложность, возвращенная как двухэлементный массив формы [total_complexity,local_complexity] если cvdo содержит цикломатические результаты покрытия сложности или пустой массив, если это не делает.

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

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

    Типы данных: double

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

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

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

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

    3. На панели Coverage диалогового окна Configuration Parameters выберите Enable coverage analysis.

    4. Под Coverage metrics выберите MCDC как уровень структурного покрытия.

    5. Нажмите OK, чтобы закрыть диалоговое окно Configuration Parameters и сохранить ваши изменения.

    6. Симулируйте модель.

    7. В прикрепленной панели Coverage Details отчет покрытия показывает цикломатическую сложность для модели, а также каждого объекта модели.

    Введенный в R2011a
    Для просмотра документации необходимо авторизоваться на сайте