Для удобства дефектные средства проверки в Bug Finder классифицируются в различные группы.
В определенных проектах можно принять решение фокусироваться только на определенных группах дефектов. Задайте название группы для опции Find defects (-checkers)
.
При рассматривании результатов можно рассмотреть все результаты определенной группы вместе. Отфильтруйте другие результаты во время анализа. Смотрите Результаты Фильтра и Группы в Пользовательском интерфейсе Рабочего стола Polyspace.
Эта тема дает обзор различных групп.
Эти дефекты связаны с обработкой исключения C++. Дефекты включают:
Испускание необработанного исключения от noexcept
функция
Непредвиденная исключительная ситуация, возникающая во время построения объекта аргумента throw
оператор
catch
операторы, отлавливающие исключения значением вместо ссылкой
catch
операторы, скрывающие последующий catch
операторы.
Для получения дополнительной информации об определенных дефектах, смотрите Дефекты Исключения C++
Параметр командной строки:
cpp_exceptions
Эти дефекты связаны с многозадачным кодом.
Дефекты гонки данных происходят, когда несколько задач работают с совместно используемой переменной или вызывают неповторно используемую стандартную библиотечную функцию без защиты.
Для определенных дефектов смотрите Дефекты Параллелизма.
Параметр командной строки:
concurrency
Дефекты блокировки происходят, когда критические разделы не настраиваются соответственно. Например:
Критические разделы вовлечены в мертвую блокировку.
Функция блокировки не имеет соответствия, разблокировали функцию.
Функция блокировки вызвана дважды без промежуточного вызова разблокировать функции.
Критические разделы защищают совместно используемые переменные от параллельного доступа. Polyspace® ожидает, что критические разделы будут следовать за определенным форматом. Критический раздел должен находиться между вызовом функции блокировки и вызовом разблокировать функции.
Для определенных дефектов смотрите Дефекты Параллелизма.
Параметр командной строки:
concurrency
Эти дефекты связаны с неправильным использованием стандартных программ криптографии от библиотеки OpenSSL. Например:
Использование криптографически слабых алгоритмов
Отсутствие существенных элементов, таких как шифр ключевой или вектор инициализации
Неправильный порядок криптографических операций
Для определенных дефектов смотрите Дефекты Криптографии.
Параметр командной строки:
cryptography
Эти дефекты являются ошибками, относящимися, как информация перемещается в вашем коде. Дефекты включают:
Мертвый или недостижимый код
Неиспользованный код
Неинициализированная информация
Для определенных дефектов смотрите Дефекты Потока данных.
Параметр командной строки:
data_flow
Эти дефекты являются ошибками, относящимися к использованию памяти, когда память динамически выделяется. Дефекты включают:
Освобождение динамически выделенной памяти
Незащищенные выделения памяти
Для определенных дефектов смотрите Дефекты Динамической памяти.
Параметр командной строки:
dynamic_memory
Эти дефекты позволяют вам наблюдать хорошие методы кодирования. Дефекты собой не могут вызвать катастрофический отказ, но они иногда подсвечивают более серьезные логические ошибки в вашем коде. Дефекты также делают ваш код уязвимым для нападений и трудно обеспечить.
Дефекты включают:
Трудно закодированные константы, такие как buffer size и контур цикла
Неиспользованные параметры функции
Для определенных дефектов смотрите Хорошие Дефекты Практики.
Параметр командной строки:
good_practice
Эти дефекты являются ошибками, относящимися к переменным в вашем коде; их значения, типы данных и использование. Дефекты включают:
Математические операции
Переполнение преобразования
Операционное переполнение
Для определенных дефектов смотрите Числовые Дефекты.
Параметр командной строки:
numerical
Эти дефекты связаны с объектно-ориентированным аспектом программирования на C++. Дефекты подсвечивают проблемы проекта класса или проблемы в иерархии наследования.
Дефекты включают:
Элемент данных, не инициализированный или неправильно инициализированный в конструкторе
Неправильное переопределение методов базового класса
Повреждение скрытия данных
Для определенных дефектов смотрите Объектно-ориентированные Дефекты.
Параметр командной строки:
object_oriented
Эти дефекты обнаруживают проблемы, такие как ненужные копии данных и неэффективные стандартные функции C++, которые могут привести к узким местам эффективности в Коде С++.
Дефекты включают:
const
параметры или возвращаемые значения, обеспечивающие копию вместо операций пересылки
Неэффективные функции для вставки новой строки и расчета длины строки
Для определенных дефектов смотрите Дефекты Эффективности.
Параметр командной строки:
performance
Эти дефекты являются ошибками, относящимися к программированию синтаксиса. Эти дефекты включают:
Присвоение по сравнению с операторами равенства
Несоответствия между переменными спецификаторами или объявлениями
Плохо отформатированные строки
Для определенных дефектов смотрите Дефекты Программирования.
Параметр командной строки:
programming
Эти дефекты связаны с обработкой файла. Дефекты включают:
Открытый поток файла
Операции на потоке файла после того, как это закрывается
Для определенных дефектов смотрите Дефекты управления ресурсами.
Параметр командной строки:
resource_management
Эти дефекты являются ошибками, относящимися к использованию памяти, когда память статически выделяется. Дефекты включают:
Доступ к массивам вне их границ
Нулевые указатели
Кастинг указателей
Для определенных дефектов смотрите Дефекты Статического ЗУ.
Параметр командной строки:
static_memory
Эти дефекты подсвечивают места в вашем коде, которые уязвимы для взламывания или других нападений безопасности. Многие из этих дефектов не вызывают ошибки периода выполнения, но вместо этого указывают на опасные области в вашем коде. Дефекты включают:
Уязвимые данные управления
Используя опасные или устаревшие функции
Генерация случайных чисел
Внешне управляемые пути и команды
Для получения дополнительной информации об определенных дефектах, смотрите Дефекты безопасности.
Параметр командной строки:
security
Эти дефекты подсвечивают элементы в вашем коде, которые являются из необеспеченных источников. Атакующие могут использовать входные данные или пути, чтобы напасть на вашу программу и отказы причины. Эти дефекты подсвечивают элементы в вашем коде, которые уязвимы. Дефекты включают:
Использование испорченных переменных или указателей
Внешне управляемые пути
Для получения дополнительной информации об определенных дефектах, смотрите Испорченные Дефекты Данных. Можно изменить поведение испорченных дефектов данных при помощи дополнительной команды -consider-analysis-perimeter-as-trust-boundary
. Смотрите -consider-analysis-perimeter-as-trust-boundary
.
Параметр командной строки:
tainted_data