exponenta event banner

Анализ кода и тестирование программного обеспечения в цикле

Обзор программного обеспечения для анализа и тестирования кода

Анализ кода для обнаружения ошибок, проверка соответствия стандартам и оценка ключевых показателей, таких как длина и цикломатическая сложность. Как правило, для рукописного кода выполняется проверка ошибок времени выполнения с помощью статического анализа кода и выполнения тестовых примеров, которые оценивают код по требованиям и оценивают охват кода. По результатам уточните код и добавьте тесты. Для сгенерированного кода продемонстрируйте, что выполнение кода дает эквивалентные модели результаты, используя те же тестовые примеры и базовые результаты. Сравните покрытие кода с покрытием модели. На основе результатов теста добавьте тесты и измените модель для регенерации кода.

Анализ кода на наличие дефектов, метрик и C:2012 MISRA

В этом рабочем процессе описывается, как проверить наличие в модели кода, совместимого с MISRA ® C:2012, и как проверить созданный код на наличие метрик кода, дефектов кода и соответствия MISRA. Чтобы создать более совместимый с MISRA код из модели, используйте генерацию кода и Model Advisor. Чтобы проверить, совместим ли код с MISRA, используйте средство проверки C:2012 Polyspace ® MISRA и возможности создания отчетов. В этом примере используется модельsimulinkCruiseErrorAndStandardsExample. Чтобы открыть модель, выполните следующие действия.

  1. Откройте проект.

    path = fullfile(matlabroot,'toolbox','shared','examples',...
    'verification','src','cruise')
    run(fullfile(path,'slVerificationCruiseStart'))

  2. В проекте откройте модель simulinkCruiseErrorAndStandardsExample.

Выполнить проверки генератора кода

Перед созданием кода из модели можно выполнить шаги, чтобы создать код, более совместимый с MISRA C и более совместимый с Polyspace. В этом примере показано, как с помощью помощника по созданию кода проверить модель перед созданием кода.

  1. Щелкните правой кнопкой мыши Вычислить целевую скорость и выберите C/C + + Code > Code Generation Advisor.

  2. Выберите папку помощника по созданию кода. На правой панели переместите Polyspace к Избранным целям - с указанием приоритетов. MISRA C:2012 guidelines цель уже выбрана.

  3. Щелкните Выполнить выбранные проверки (Run Selected Checks).

    Помощник по созданию кода проверяет, существуют ли какие-либо блоки или настройки конфигурации, которые не рекомендуется использовать для анализа соответствия MISRA C:2012 и кода Polyspace. Для этой модели проверка несовместимых блоков проходит, но существуют некоторые настройки конфигурации, несовместимые с соответствием MISRA и проверкой Polyspace.

  4. Щелкните на чеке, который не прошел. Примите изменения параметров, выбрав Изменить параметры.

  5. Повторно запустите проверку, выбрав Выполнить эту проверку.

Выполнить проверки помощника по модели

Перед созданием кода из модели можно выполнить действия по созданию кода, который более совместим с MISRA C и более совместим с Polyspace. В этом примере показано, как использовать Model Advisor для проверки модели перед созданием кода.

  1. В нижней части окна Помощник по созданию кода (Code Generation Advisor) выберите Мастер модели (Model Advisor).

  2. В папке «По заданию» выберите проверки «Стандарты моделирования для MISRA C:2012 advisor».

  3. Щелкните Выполнить выбранные проверки (Run Selected Checks) и просмотрите результаты.

  4. Если какая-либо из задач завершается неуспешно, внесите предложенные изменения и повторите проверки до тех пор, пока не будут выполнены рекомендации MISRA по моделированию.

Создание и анализ кода

После проверки соответствия модели можно создать код. С помощью Polyspace можно проверить код на соответствие C:2012 MISRA и создать отчеты для демонстрации соответствия C:2012 MISRA.

  1. В редакторе Simulink ® щелкните правой кнопкой мыши Вычислить целевую скорость и выберите Код C/C + + > Построить эту подсистему .

  2. Используйте настройки по умолчанию для настраиваемых параметров и выберите «Построить».

  3. После создания кода щелкните правой кнопкой мыши «Вычислить целевую скорость» и выберите «Полиспейс» > «Параметры».

  4. Нажмите кнопку Configure (Polyspace Bug Finder). Эта опция позволяет выбрать дополнительные опции анализа Polyspace в окне конфигурации Polyspace.

  5. На той же панели выберите Вычислить метрики кода (Polyspace Bug Finder). Этот параметр включает вычисления метрики кода для созданного кода.

  6. Сохраните и закройте окно конфигурации Polyspace.

  7. В модели щелкните правой кнопкой мыши Вычислить целевую скорость и выберите Polyspace > Verify > Code Generated For Selected Subsystem.

    Polyspace Bug Finder™ анализирует сгенерированный код для подмножества проверок MISRA и проверок дефектов. Ход выполнения анализа можно увидеть в окне команд MATLAB. После завершения анализа откроется среда Polyspace.

Обзор результатов

После выполнения анализа Полиспейса созданного кода в среде Полиспейса отображаются результаты анализа статического кода.

  1. Разверните дерево для правила 8.7 и щелкните по различным результатам.

    Правило 8.7 гласит, что функции и объекты не должны быть глобальными, если функция или объект являются локальными. При щелчке через 8.7 нарушения можно увидеть, что эти результаты относятся к переменным, которые также используются другими компонентами, такими как CruiseOnOff. Можно аннотировать код или модель для выравнивания каждого результата. Но, поскольку эта модель является единицей в более крупной программе, можно также изменить конфигурацию анализа, чтобы проверить только подмножество правил MISRA.

  2. В модели щелкните правой кнопкой мыши Вычислить целевую скорость (Compute target speed) и выберите Полиспейс (Polyspace) > Опции (Options).

  3. Установите для параметра «Параметры» (Polyspace Bug Finder) значение Project configuration. Эта опция позволяет выбрать подмножество правил MISRA в конфигурации Polyspace.

  4. Нажмите кнопку «Настроить».

  5. В окне Polyspace Configuration на панели Coding Standards & Code Metrics установите флажок Check MISRA C:2012 (Polyspace Bug Finder) и в раскрывающемся списке выберите single-unit-rules. Теперь Polyspace проверяет только правила C:2012 MISRA, применимые к одной единице.

  6. Сохраните и закройте окно конфигурации Polyspace.

  7. Повторно запустите анализ с новой конфигурацией.

    Ранее показанные Полиспейсом правила были найдены, поскольку модель была проанализирована сама собой. При ограничении правил Polyspace, проверенных на наличие одинарного подмножества, обнаружено только два нарушения.

При интеграции этой модели с родительской моделью можно добавить остальные правила C:2012 MISRA.

Создать отчет

Чтобы продемонстрировать соответствие C:2012 MISRA и сообщить о созданных метриках кода, необходимо экспортировать результаты. В этом разделе показано, как создать отчет после анализа. При необходимости создания отчета при каждом выполнении анализа см. раздел Generate report (Polyspace Bug Finder).

  1. Если они еще не открыты, откройте результаты в среде Polyspace.

  2. На панели инструментов выберите Отчеты > Выполнить отчет.

  3. В качестве типа отчета выберите BugFinderSummary.

  4. Щелкните Выполнить отчет (Run Report).

    Отчет сохраняется в той же папке, что и результаты.

  5. Чтобы открыть отчет, выберите Отчеты > Открыть отчет.

Связанные темы