Рекомендации по кодированию MISRA-C для персональных программ?
==============================================================

Я обычно работаю деревом, а не разработчиком. Я изучаю C/С++ для встроенных систем, пытаясь сделать некоторые из моих инструментов автономными, чтобы сэкономить много часов на повторную работу.

На данный момент, весело и хорошо, я потратил, может быть, на сто часов кодирование/обучение и уже сэкономил больше времени *.

Как я хочу продолжать покупать и следовать правилу кодирования MISRA "обязательной хорошей идеей"? Что содержит MISRA? Только правила кодирования или советы, чтобы сделать его более безопасным?

Эти инструменты могут быть опасны (ведь они режут древесину, а человеческое тело гораздо менее устойчиво...).

Примечание. Я, очевидно, выполняю свой тест за 4 шага:

* Просто pic работает с регистратором OSD и SD-карты (в один прекрасный день я сделаю инструмент anylze и перестану читать).
* Я подключаю инструмент без ничего
* Я использую мягкие сверла/резаки на пене
* Я провожу реальный тест на большом расстоянии рукой с кнопкой аварийного останова.

Также я единственный сотрудник, и никто другой не имеет доступа к моему рабочему месту.

* пока я превращаю сверло в своего рода 3D-деревоприемник (выполняющий неточную часть работы) и "режущую доску" в автоматизированную.

Примечание2: Я не являюсь носителем языка, поэтому имена инструментов, вероятно, отключены.

 

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

* Обеспечение безопасности
* Обеспечьте надежность, надежность программного обеспечения.
* Безопасность человека должна иметь приоритет в случае конфликта с безопасностью собственности.
* Рассмотрим как случайные, так и систематические сбои в проектировании системы.
* Продемонстрируйте надежность, а не просто полагайтесь на отсутствие сбоев.
* Применение соображений безопасности при проектировании, изготовлении, эксплуатации, обслуживании и удалении продуктов.

Документы в основном состоят из консультативной информации, основанной на правилах, для кода, который пытается удовлетворить эти цели. За несколько лет цены на документы MISRA несколько снизились, некоторые документы можно купить в Интернете от MISRA всего за GBP 10 + НДС.

Однако, как новичок и любительский кодер, я бы посоветовал сначала укрепить свои знания о C и С++. Хотя в большинстве областей промышленности часто бывает хорошо следовать соответствующему стандарту, если это применимо, документы написаны с предположением, что читатель имеет очень прочную основу для языков, а также в отношении проблем и процессов, регулирующих полномасштабный коммерческий тип приложения, написанные в них. Если ваш семинар предназначен только для личного использования и в зависимости от правил, регулирующих безопасность на рабочем месте в вашей юрисдикции, я могу сказать, что хорошее знание языков, языковых инструментов и аппаратного обеспечения позволит вам начать делать правильный выбор в отношении того, как больше кода, чем чтение MISRA на таком этапе.

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

 

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

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

MISRA-C ориентирован только на программирование на языке C, он не затрагивает проблемы с процессором или микроконтроллером и т.д., хотя он обеспечивает соблюдение некоторых форм защитного программирования, что является противодействием EMI, код запуска и другие формы неожиданной программы поведение. (Список общих советов и трюков за пределами C см. В [этом](/questions/1007/compiling-an-application-for-use-in-highly-radioactive-environments/15312#15312). Не все из них обязательно применимы к вашей конкретной машине.)

Чтобы продемонстрировать соответствие MISRA, вы создаете "матрицу соответствия", которая показывает, как вы поймаете каждую директиву/правило документа MISRA-C: через сообщения компилятора, экспертную оценку, анализ статического кода и т.д.

Большинство правил в документе имеют большой смысл, но некоторые нет. Однако MISRA-C допускает отклонения от большинства правил, считая их одним из следующих:

* Обязательный. Отклонения не допускаются.
* Рекомендуется. Нужно вызвать формальную процедуру отклонения, если не следовать правилу.
* Advisory. Можно отклоняться от правила без формального отклонения.

Как правило, создание соответствия MISRA-C, таким образом, осуществляется путем установления стандарта кодирования компании, который учитывает все правила. Самый простой способ его реализации заключается в том, что в этом документе записывается, какие правила соблюдаются и какие из них пропускаются на уровне компании. Затем установите фильтры статического анализа кода соответственно.