Поддержка Polyspace MISRA C: 2 012 поправок

Начиная в R2021a, Polyspace® Bug Finder™ поддерживает поправки к MISRA C®:2012 правил в Техническом Исправлении 1 и Поправка 2.

MISRA C:2012 техническое исправление 1

MISRA C:2012 Техническое Исправление 1 добавляет разъяснения в существующие правила. Разъяснения привели к соответствующим изменениям в средствах проверки Polyspace.

ПравилоОписаниеОбновитесь в техническом исправлении 1
MISRA C:2012 Rule 10.1Операнды не должны иметь несоответствующего существенного типа.Правило теперь явным образом запрещает использование типов указателей с логическими операндами, такими как &&, || и !.
MISRA C:2012 Rule 10.5Значение выражения не должно быть брошено к несоответствующему существенному типу.Правило теперь запрещает броски целочисленных констант со значением 0 или 1 к по существу перечислимым типам.
MISRA C:2012 Rule 11.2Преобразования не должны выполняться между указателем на неполный тип и любым другим типом.Правило теперь учитывает только неполные типы, на которые указывают указатели. Например, если указатель присвоен другому, и единственной разницей между резкими типами является const спецификатор, правило не рассматривает это присвоение как преобразование.
MISRA C:2012 Rule 11.4Преобразование не должно быть выполнено между указателем на объект и целочисленным типом.Правило теперь применяется явным образом к указателям на объекты только. Преобразования между целочисленным типом и другими типами указателей, такими как void* или указатели на функции отмечаются другими правилами.
MISRA C:2012 Rule 11.9Макро-NULL должен быть единственной разрешенной формой целочисленного постоянного нулевого указателя.Правило позволяет использование {0} инициализировать агрегируется или объединения, содержащие указатели.
MISRA C:2012 Rule 14.2Цикл for должен быть правильно построен.Правило позволяет любую форму инициализации счетчика цикла, пока инициализация не имеет других побочных эффектов.

Поправка 2 MISRA C:2012

Поправка 2 MISRA C:2012 обращается к новым функциям языка в стандарте C11. Все обновления в Поправке 2 были включены в средства проверки Polyspace.

ПравилоОписаниеОбновитесь в поправке 2
MISRA C:2012 Rule 1.4Функции языка на стадии становления не должны быть использованы.Это правило является новым в Поправке 2.
MISRA C:2012 Rule 12.1Приоритет операторов в рамках выражений должен быть сделан явным.Правило теперь передает под мандат нарушение если операнд _Alignof оператор не заключен в круглую скобку.
MISRA C:2012 Rule 21.3Функции выделения памяти и освобождения <stdlib.h> не буду использоваться.Правило теперь отмечает использование aligned_alloc функция.
MISRA C:2012 Rule 21.8Стандартные функции завершения Библиотеки <stdlib.h> не должны использоваться.

Правило больше не отмечает system.

В дополнение к exit и abort, правило теперь отмечает _Exit и quick_exit.

MISRA C:2012 Rule 21.21Стандартная Библиотечная функция system из <stdlib.h> не буду использоваться.Это правило является новым в Поправке 2.
MISRA C:2012 Rule 22.1Все средства, полученные динамически посредством Стандартных Библиотечных функций, должны быть явным образом высвобождены.Правило теперь отмечает выделение памяти с помощью aligned_alloc функционируйте, если память не выпущена.