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

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

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

Независимые от языка проблемы

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

Общий

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

Лексические соглашения

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

Выражения

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

Объявления

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

Классы

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

Шаблоны

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

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

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

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

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

Похожие темы