Краткий ответ про MISRA

Андрей Карпов
Статей: 373



В связи с началом поддержки в PVS-Studio различных компиляторов для встраиваемых платформ мы изменили свою позицию касательно MISRA. Начиная с версии 6.27 анализатор PVS-Studio поддерживает стандарты MISRA C и MISRA C++. Подробнее.

Нас часто спрашивают, поддерживает ли анализатор PVS-Studio стандарт MISRA. Я решил написать короткую заметку, чтобы было удобно отвечать на письма, давая ссылку. Короткий ответ - на данный момент мы не поддерживаем стандарты MISRA C, MISRA C++ и пока не планируем их поддерживать. Подробное объяснение нашей позиции изложено ниже.

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

Например, мы не заставляем разработчика обязательно писать break в swicth, не запрещаем использовать goto. Мы считаем малополезной рекомендацию не использовать комментарии вида /* */, а использовать //. Мы не видим смысла предупреждать С программистов о том, что у них в программе используется адресная арифметика: p++;.

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

Мы избрали другой путь. Ни в одном стандарте не написано "не делайте опечатки". Однако, они есть и с ними надо бороться. Наш анализатор, например, очень силён в этом. Чего стоит только одна диагностика V501. Подобные диагностики - это наше конкурентное преимущество.

Да, отчасти, мы можем пересекаться с MISRA. Это значит, что некоторые вещи однозначно полезны и одновременно появляются в разных стандартах и анализаторах.

На данный момент мы не планируем поддерживать MISRA. Мы понимаем, что некоторым необходима поддержка этого стандарта. Вместе с тем, свой анализатор мы портить не хотим. Я думаю это нормально. Если нужно соблюдать стандарт MISRA, есть множество инструментов, позволяющих это сделать.

Анализаторы, проверяющие соответствие кода стандарту MISRA:

  • Coverity by Synopsys
  • Klocwork by Rogue Wave Software
  • LDRA Testbed by Liverpool Data Research Associates
  • Parasoft C/C++test by Parasoft
  • PC-Lint by Gimpel Software
  • Polyspace by MathWorks
  • QA-C by Programming Research
  • Understand by SciTools
  • и так далее

Как видите, много кто умеет давать рекомендации по написанию более качественного кода.

Если же нужно искать настоящие ошибки, то это к нам!

Демонстрация возможностей анализатора PVS-Studio по выявлению НАСТОЯЩИХ ошибок в коде:

  • Ошибки, обнаруженные в Open Source проектах (на момент написания статьи, мы нашли уже более 10500 ошибок).
  • Статьи о проверке известных открытых проектов с помощью анализатора PVS-Studio.


Найдите ошибки в своем C, C++, C# и Java коде

Предлагаем попробовать проверить код вашего проекта с помощью анализатора кода PVS-Studio. Одна найденная в нём ошибка скажет вам о пользе методологии статического анализа кода больше, чем десяток статей.

goto PVS-Studio;

Андрей Карпов
Статей: 373


Найденные ошибки

Проверено проектов
346
Собрано ошибок
13 188

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;