Мисра стандарт для встроенного программного обеспечения - PullRequest
11 голосов
/ 15 сентября 2008

У меня есть требование сделать большой объем кода, совместимого с MISRA.
Первый вопрос: может ли кто-нибудь дать оценку за прохождение хорошо написанного кода для встроенной системы на основе опыта. Я понимаю, что «хорошо написано» плохо определено и расплывчато, поэтому я прошу приблизительную оценку.
Второй вопрос: Любая рекомендация для инструмента, который можно настраивать (т.е. разрешать подавление определенных предупреждений) и использовать в среде автоматической сборки (т.е. интерфейс командной строки) Любые другие полезные предложения, которые могут помочь с этой задачей.
Спасибо Илья.

Ответы [ 6 ]

12 голосов
/ 15 сентября 2008

Я также настоятельно рекомендую PC-Lint. Если вам приходится компилировать код с помощью Visual Studio, я рекомендую подключаемый модуль «Visual Lint» от Riverblade. Если вы не можете скомпилировать код в Visual Studio, вы все равно можете запустить PC-Lint из командной строки для получения хорошего эффекта.

Некоторые компиляторы встроенных систем предоставляют тестирование соответствия MISRA в качестве предупреждений компилятора. Я использую IAR-компилятор для разработки Arm7 / Arm9. Он позволяет легко настроить контрольный список соответствия MISRA прямо в настройке компилятора.

Трудно придумать эмпирическое правило для оценки времени, которое понадобится вам, чтобы сделать хорошо написанный код, совместимый с MISRA. Многое зависит от существующих у программистов привычек кодирования и от того, насколько точно они следуют правилам MISRA.

Грубые оценки:
2 - 3 дня, чтобы стать экспертом в использовании PC-Lint.
Начальный этап создания существующего кода, совместимого с MISRA: от 10 до 25 процентов времени, затрачиваемого на написание кода в первую очередь.
Обеспечение совместимости кода с MISRA: от 5 до 10 процентов добавляется к разработке кода. Половина этой стоимости - это изменение привычек ваших программистов следовать «обычаю MISRA». Другая половина - это дополнительные расходы на тестирование и проверку кода для обеспечения соответствия требованиям MISRA.

8 голосов
/ 15 сентября 2008

Создание кода, совместимого с Misra, не слишком сложная задача - если вы следуете довольно хорошим практикам программирования. Вам может показаться, что некоторые правила указателя немного хитры, если в коде, который вы пытаетесь выполнить, есть какая-то странная и замечательная арифметика указателей.

Я бы предпочел рекомендацию Грега для PC Lint, но Splint с открытым исходным кодом также стоит посмотреть, хотя между ними (и системой предупреждений компилятора), по моим оценкам, вы все равно сможете охватить только 80% правила Мисры - остальным, вероятно, придется проверять код вручную.

4 голосов
/ 15 сентября 2008

Я использую PC Lint для статического анализа кода C и C ++. Его можно настроить, чтобы показать, какие правила MISRA были нарушены, и он имеет интерфейс командной строки.

3 голосов
/ 10 ноября 2008

У нас была похожая проблема модернизации правил Мисры. У нас возникли некоторые проблемы с качеством кода в большом проекте, и мы решили использовать MISRA для улучшения качества кода.

Мы используем компилятор Green Hills, который поддерживает правила MISRA C. Также доступны отдельные шашки. В зависимости от того, что вы хотите сделать, переключение всех правил может быть слишком сложным. Мы включили одно правило за раз, чтобы дать людям время на исправление ограниченного числа подобных проблем, в противном случае вы будете полностью поражены количеством ошибок.

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

Иногда бывает трудно получить совместимость со старым кодом, поскольку никто точно не знает, как работает код. Я надеюсь, что у вас есть юнит-тесты.

3 голосов
/ 16 сентября 2008

Я использовал коммерческий инструмент под названием QAC . Инструмент способен применять MISRA

Он имеет интерфейс командной строки, поэтому вы можете настроить его на запуск из среды автоматической сборки. Применяемые правила настраиваются, но ожидайте, что кто-то потратит некоторое время на их настройку. Правоприменение MISRA довольно простое и работает достаточно хорошо. Мне сказали (и это только третья рука), что это один из инструментов, которые некоторые агентства (например, FDA) используют для оценки кода. Как и большинство инструментов статического анализа, есть шум (ложные срабатывания), с которым приходится иметь дело. В прошлый раз, когда я использовал его, у него не было хороших средств пометить / предотвратить повторное появление ложного срабатывания (без изменения кода, на который он жаловался).

Я подозреваю, что младшему инженеру понадобится неделя (4-5 дней), чтобы настроить его (при условии, что они настроены, чтобы он работал так, как вы хотите).

В дополнение к этому, другие коммерческие инструменты статического анализа, вероятно, также применяют MISRA. По сообщениям (согласно их торговому представителю), Klocwork делает.

1 голос
/ 28 августа 2012

Я ценю, что это старый вопрос, но в интересах любых других археологов (или искателей) важно помнить, что MISRA предоставляет рекомендации , которые не всегда следует слепо соблюдать.

Я рекомендую писать новый код с учетом MISRA; поэтому будет намного легче оставаться послушным.

Однако это не всегда возможно - и, в частности, при попытке выполнить обратный инжиниринг кода в соответствии с указаниями. В этом случае я предлагаю вам сосредоточиться на Обязательных правилах и рассматривать Консультативные услуги как бонус ... здесь также применимы затраты и выгода!

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...