exponenta event banner

Изменение поведения по умолчанию для чекеров поиска ошибок

Анализ Finder™ ошибок Polyspace ® проверяет код C/C + + на наличие ошибок и нарушений внешних стандартов кодирования. По умолчанию шашки Bug Finder предназначены для:

  • Показать как можно меньше ложных срабатываний.

  • Требуется минимальная предварительная настройка.

Однако для конкретных проектов может потребоваться изменить поведение некоторых шашек по умолчанию. Например, некоторые определяемые пользователем типы данных могут рассматриваться как логические или обнаруживать гонки данных, связанные с операциями, которые Bug Finder считает атомарными по умолчанию.

Используйте этот раздел, чтобы найти изменения, разрешенные для шашек Bug Finder. Кроме того, эти опции можно найти в отчете об анализе, чтобы узнать, было ли изменено поведение шашек по умолчанию.

Обратите внимание, что:

  • Параметры не включают и не отключают средство проверки.

    Сведения о включении или отключении определенных шашек см. в разделе Выбор шашек для обнаружения дефектов.

  • Эти параметры можно использовать исключительно для изменения поведения существующего средства проверки.

    Такие параметры, как тип целевого процессора, параметры многозадачности и внешние ограничения, также могут изменять поведение средства проверки. Однако модификация происходит как побочный эффект. Эти параметры обычно задаются для точного отражения целевой среды.

Дефектные шашки

ВыборЗначение опцииШашки измененыМодификация
Find defects (-checkers)Гонка данных, включая атомарные операции (интерфейс пользователя) или DATA_RACE_ALL (командная строка)Data race

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

См. также раздел Определение атомных операций в многозадачном коде.

Run stricter checks considering all values of system inputs (-checks-using-system-input-values) Шашки, опирающиеся на числовые значения системных входовСм. раздел Расширение средств поиска ошибок для поиска дефектов из определенных системных входных значений.
-code-behavior-specifications

XML-файл.

Записи в XML-файле сопоставляют пользовательские функции с функциями из стандартной библиотеки.

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

XML-файл.

Записи в XML-файле сопоставляют пользовательские примитивы параллелизма с примитивами, которые может автоматически обнаружить Bug Finder.

Дефекты параллелизма

См. раздел Распространение проверки дефектов параллелизма на неподдерживаемые многопоточные среды.

XML-файл.

Элементы списка XML-файлов, которые требуется запретить в исходном коде.

Use of a forbidden functionСм. раздел Пометка устаревших или небезопасных функций с помощью средств поиска ошибок.

XML-файл.

Записи в функциях списка XML-файлов, аргументы указателя которых должны указывать на инициализированные буферы.

Non-initialized variableСм. раздел Расширенная проверка инициализации для проверки аргументов функции, передаваемых указателями.
-detect-bad-float-op-on-zero Floating point comparison with equality operatorsПо умолчанию средство проверки игнорирует сравнения с плавающей запятой с операторами равенства, если один из операндов равен 0,0. При использовании этой опции также отмечаются сравнения с 0.0.
-consider-analysis-perimeter-as-trust-boundary Дефекты запятнанных данныхПо умолчанию дефекты запятнанных данных считают полученные извне данные запятнанными. При использовании этой опции следующие данные также рассматриваются как запятнанные:
  • Формальные параметры внешне видимой функции, не имеющие видимого вызывающего абонента.

  • Возвращает значения упорных функций.

  • Глобальные переменные, внешние по отношению к единице измерения.

Кодирование стандартных чекеров

Шашки стандартов кодирования также могут быть расширены или изменены с соответствующими опциями.

ВыборЗначение опцииШашки измененыМодификация
Effective boolean types (-boolean-types)

Типы данных

  • MISRA C ®: правила 2004 12.6, 13.2, 15.4

  • MISRA C:2012 правила 10.1, 10.3, 10.5, 14.4, 16.7

Правила, охватываемые этими шашками, включают логические типы. При использовании этого параметра определяемые пользователем типы можно считать фактически логическими.

Allowed pragmas (-allowed-pragmas)

Названия прагм

MISRA C:2004 правило 3.4 и MISRA C++ правило 16-6-1

Эти правила требуют, чтобы все директивы pragma были задокументированы в документации компилятора. При использовании этой опции анализ рассматривает указанные прагматики как документированные.

-code-behavior-specifications

XML-файл.

Записи в XML-файле определяют ограничения на глобальные аспекты программы, такие как максимальная глубина вложенности в операторах потока управления.

MISRA C: 2012 Правило 1.1

Можно увеличить или уменьшить следующие параметры средства проверки правил:

  • Максимальная глубина вложенности, допустимая в операторах потока управления

  • Максимально допустимые уровни включения с помощью файлов включения

  • Максимальное число констант в перечислении

  • Максимальное количество макросов, разрешенных в единицах преобразования

  • Максимальное число членов в структуре

  • Максимально допустимые уровни вложенности в структуре

XML-файл.

Записи в XML-файле определяют, сколько символов сравнивается, прежде чем рассматривать два идентификатора как отдельные.

MISRA C: 2012 Правила 5.1 - 5.5

Эти правила требуют уникальности определенных типов идентификаторов. Например, правило 5.1 требует, чтобы внешние идентификаторы были различными.

Если разница между двумя идентификаторами возникает после первого num , средство проверки правил считает идентификаторы идентичными. Можно изменить параметр num отдельно для внешних и внутренних идентификаторов.

Check Guidelines (-guidelines)Пороговые значения для проверки сложности программного обеспеченияСложность программного обеспеченияСм. Снижение сложности программного обеспечения с помощью средств проверки в полиспейсе

Связанные темы