Анализируйте код, чтобы обнаружить ошибки, проверить соответствие стандартов и оценить ключевые метрики, такие как длина и цикломатическая сложность. Обычно для рукописного кода, вы проверяете на ошибки времени выполнения с инструментом статического анализа кода и запускаете тесты, которые оценивают код против требований и оценивают покрытие кода. На основе результатов совершенствуйте код и добавьте тесты. Для сгенерированного кода продемонстрируйте, что выполнение кода приводит к эквивалентным результатам к модели при помощи тех же тестов и базовым результатам. Сравните покрытие кода с покрытием модели. На основе результатов испытаний добавьте тесты и измените модель, чтобы регенерировать код.
Этот рабочий процесс описывает, как проверять, производит ли ваша модель MISRA® C:2012 совместимый код и как проверять ваш сгенерированный код на метрики кода, дефекты кода и податливость MISRA. Чтобы произвести больше совместимого кода MISRA из вашей модели, вы используете генерацию кода и Model Advisor. Чтобы проверять, является ли код MISRA совместимый, вы используете средство проверки Polyspace® MISRA C:2012 и возможности генерации отчета. В данном примере вы используете модель simulinkCruiseErrorAndStandardsExample
. Открыть модель:
Откройте проект.
path = fullfile(matlabroot,'toolbox','shared','examples',... 'verification','src','cruise') run(fullfile(path,'slVerificationCruiseStart'))
Из проекта откройте модель simulinkCruiseErrorAndStandardsExample
.
Прежде чем вы сгенерируете код из своей модели, существуют шаги, которые можно сделать, чтобы сгенерировать код, более совместимый с MISRA C и более совместимый с Polyspace. В этом примере показано, как использовать Советника Генерации кода, чтобы проверять вашу модель прежде, чем сгенерировать код.
Щелкните правой кнопкой по Compute target speed и выберите C/C++ Code> Code Generation Advisor.
Выберите папку Code Generation Advisor. На правой панели переместите Polyspace
к Selected objectives - prioritized . MISRA C:2012 guidelines
цель уже выбрана.
Нажмите Run Selected Checks.
Советник Генерации кода проверяет, существуют ли какие-либо блоки или параметры конфигурации, которые не рекомендуются для податливости MISRA C:2012 и анализа кода Polyspace. Для этой модели, проверки на несовместимые передачи блоков, но существуют некоторые параметры конфигурации, которые несовместимы с податливостью MISRA и проверкой Polyspace.
Нажмите на проверку, которая не передала. Примите изменения параметра путем выбора Modify Parameters.
Повторно выполните проверку путем выбора Run This Check.
Прежде чем вы сгенерируете код из своей модели, существуют шаги, которые можно сделать, чтобы сгенерировать код, который более совместим с MISRA C и более совместим с Polyspace. Этот пример показывает вам, как использовать Model Advisor, чтобы проверять вашу модель прежде, чем сгенерировать код.
В нижней части окна Code Generation Advisor выберите Model Advisor.
Под папкой By Task выберите советника Modeling Standards for MISRA C:2012 проверки.
Нажмите Run Selected Checks и рассмотрите результаты.
Если какой-либо сбой задач, сделайте предложенные модификации и повторно выполните проверки до передачи руководств по моделированию MISRA.
После того, как вы сделали проверку податливости модели, можно сгенерировать код. С Polyspace можно проверять код на податливость с MISRA C:2012 и сгенерировать отчеты продемонстрировать податливость с MISRA C:2012.
В редакторе Simulink® щелкните правой кнопкой по Compute target speed и выберите C/C++ Code> Build This Subsystem.
Используйте настройки по умолчанию в настраиваемых параметрах и выберите Build.
После того, как код сгенерирован, щелкните правой кнопкой по Compute target speed и выберите Polyspace> Options.
Нажмите кнопку Configure (Polyspace Bug Finder). Эта опция позволяет вам выбирать более усовершенствованные аналитические опции Polyspace в окне настройки Polyspace.
На той же панели выберите Calculate Code Metrics. Эта опция включает метрические вычисления кода для вашего сгенерированного кода.
Сохраните и закройте окно настройки Polyspace.
Из вашей модели щелкните правой кнопкой по Compute target speed и выберите Polyspace> Verify> Code Generated For Selected Subsystem.
Polyspace Bug Finder™ анализирует сгенерированный код для подмножества проверок MISRA и дефектных проверок. Вы видите прогресс анализа в Окне Команды MATLAB. Если анализ закончен, среда Polyspace открывается.
После того, как вы запустите анализ Polyspace своего сгенерированного кода, среда Polyspace показывает вам результаты инструмента статического анализа кода.
Расширьте дерево для правила 8.7 и нажатия кнопки через различные результаты.
Правило 8.7 утверждает эти функции, и объекты не должны быть глобальной переменной, если функция или объект локальны. Когда вы щелкаете посредством этих 8,7 нарушений, вы видите, что эти результаты относятся к переменным, которые другие компоненты также используют, такие как CruiseOnOff
. Можно аннотировать код или модель, чтобы выровнять по ширине каждый результат. Но, потому что эта модель является модулем в большей программе, можно также изменить настройку анализа, чтобы проверять только подмножество правил MISRA.
В вашей модели щелкните правой кнопкой по Compute target speed и выберите Polyspace> Options.
Установите Settings from (Polyspace Bug Finder) опция к Project configuration
. Эта опция позволяет вам выбирать подмножество правил MISRA в настройке Polyspace.
Нажмите кнопку Configure.
В окне Polyspace Configuration, на панели Coding Standards & Code Metrics, выбирают флажок Check MISRA C:2012 и из выпадающего списка, выбирают single-unit-rules
. Теперь Polyspace проверяет только правила MISRA C:2012, которые применимы к единому блоку.
Сохраните и закройте окно настройки Polyspace.
Повторно выполните анализ с новой настройкой.
Polyspace правил показал, ранее были найдены, потому что модель анализировалась отдельно. Когда вы ограничили Polyspace правил, проверяемый на подмножество единого блока, только два нарушения были найдены.
Когда эта модель интегрирована со своей родительской моделью, можно добавить остальную часть правил MISRA C:2012.
Чтобы продемонстрировать податливость с MISRA C:2012 и сообщить относительно ваших метрик сгенерированного кода, необходимо экспортировать результаты. Этот раздел показывает вам, как сгенерировать отчет после анализа. Если вы хотите сгенерировать отчет каждый раз, когда вы запускаете анализ, видите Generate report
.
Если они уже не открыты, открывают ваши результаты в среде Polyspace.
Из панели инструментов выберите Reporting> Run Report.
Выберите BugFinderSummary как свой тип отчета.
Нажмите Run Report.
Отчет сохранен в той же папке как ваши результаты.
Чтобы открыть отчет, выберите Reporting> Open Report.