Polyspace ® не проверяет следующие правила кодирования MISRA ® C++. Эти правила не проверяются ни в средстве поиска ошибок, ни в средстве проверки кода. Некоторые из этих правил не могут быть применены, поскольку они находятся вне области действия программного обеспечения Polyspace. Правила касаются документации, динамических аспектов или функциональных аспектов правил MISRA.
Список поддерживаемых правил см. в разделе Правила MISRA C++: 2008.
| 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++. | Чтобы соблюдать это правило, проверьте документацию компилятора. |