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