Неподдерживаемые правила кодирования MISRA C++

Polyspace® не проверяет следующие MISRA®Правила кодирования C++. Эти правила не проверяются ни в Bug Finder, ни в Code Prover. Некоторые из этих правил не могут быть применены, так как они находятся вне возможностей программного обеспечения Polyspace. Правила касаются документации, динамических аспектов или функциональных аспектов правил MISRA.

Список поддерживаемых правил см. в MISRA C++: 2008 Rules.

Языковые независимые проблемы

N.КатегорияОпределение MISRAДополнительная информация
0-1-4НеобходимыйПроект не должен содержать энергонезависимых переменных POD, имеющих только одно использование. 
0-1-6НеобходимыйПроект не должен содержать образцов, когда энергонезависимым переменным присваиваются значения, которые впоследствии никогда не используются. 
0-1-8НеобходимыйВсе функции с пустым типом возврата должны иметь внешние побочные эффекты. 
0-3-1НеобходимыйМинимизация отказов во время работы должна обеспечиваться использованием по крайней мере одного из: (а) инструментов/методов статического анализа; b) инструменты/методы динамического анализа; (c) явное кодирование проверок для обработки отказов во время выполнения. 
0-3-2НеобходимыйЕсли функция генерирует информацию об ошибке, эта информация об ошибке должна быть проверена. 
0-4-1ДокументИспользование масштабно-целого или фиксированной арифметики должно быть задокументировано.Чтобы соблюдать это правило, проверьте документацию компилятора.
0-4-2ДокументИспользование арифметики с плавающей точкой должно быть задокументировано.Чтобы соблюдать это правило, проверьте документацию компилятора.
0-4-3ДокументРеализации с плавающей точкой должны соответствовать определенному стандарту с плавающей точкой.Чтобы соблюдать это правило, проверьте документацию компилятора.

Общая информация

N.КатегорияОпределение MISRAДополнительная информация
1-0-2ДокументНесколько компиляторов должны использоваться только в том случае, если они имеют общий, определенный интерфейс.Чтобы соблюдать это правило, проверьте документацию компилятора.
1-0-3ДокументРеализация целочисленного деления в выбранном компиляторе определяется и документируется.Чтобы соблюдать это правило, проверьте документацию компилятора.

Лексические конвенции

N.КатегорияОпределение MISRAДополнительная информация
2-2-1ДокументНабор символов и соответствующая кодировка должны быть задокументированы.Чтобы соблюдать это правило, проверьте документацию компилятора.

Выражения

N.КатегорияОпределение MISRAДополнительная информация
5-0-16НеобходимыйОперанд указателя и любой указатель, полученный из арифметики указателя, использующей этот операнд, должны оба адресовать элементы одного массива. 
5-17-1НеобходимыйСемантическая эквивалентность между двоичным оператором и его формой оператора назначения должна быть сохранена. 

Декларации

N. Определение MISRAДополнительная информация
7-2-1НеобходимыйВыражение с базовым типом перечисления должно иметь только значения, соответствующие перечислителям перечисления. 
7-4-1ДокументВсе виды использования ассемблера должны быть задокументированы.Чтобы соблюдать это правило, проверьте документацию компилятора.

Классы

N.КатегорияОпределение MISRAДополнительная информация
9-6-1ДокументКогда требуется абсолютное позиционирование бит, представляющих битовое поле, то должно быть задокументировано поведение и упаковка битовых полей.Чтобы соблюдать это правило, проверьте документацию компилятора.

Шаблоны

N. Определение MISRAДополнительная информация
14-5-1НеобходимыйУниверсальная функция, не являющаяся членом, должна быть объявлена только в пространстве имен, которое не является связанным пространством имен. 
14-7-1НеобходимыйВсе шаблоны классов, шаблоны функций, функции представителей шаблонов классов и статические представители шаблонов классов должны создаваться по крайней мере один раз. 
14-7-2НеобходимыйДля любой конкретной специализации шаблона явный экземпляр шаблона с шаблоном-аргументами, используемыми в специализации, не делает программу плохо сформированной. 

Обработка исключений

N.КатегорияОпределение MISRAДополнительная информация
15-0-1ДокументИсключения должны использоваться только для обработки ошибок.Чтобы соблюдать это правило, проверьте документацию компилятора.
15-1-1НеобходимыйВыражение назначения оператора throw само по себе не должно вызывать выдачу исключения. 
15-3-1НеобходимыйИсключения должны быть высказаны только после запуска и до окончания программы. 
15-3-4НеобходимыйКаждое исключение, явно выданное в коде, должно иметь обработчик совместимого типа во всех путях вызова, который может привести к этой точке. 

Введение в библиотеку

N.КатегорияОпределение MISRAДополнительная информация
17-0-3НеобходимыйИмена стандартных библиотечных функций не должны переопределяться. 
17-0-4НеобходимыйВсе библиотечные коды должны соответствовать MISRA C++.Чтобы соблюдать это правило, проверьте документацию компилятора.

Похожие темы