exponenta event banner

Группы дефектов для поиска ошибок

Для удобства дефектные шашки в Bug Finder классифицируются на различные группы.

В этом разделе представлен обзор различных групп.

Исключения C++

Эти дефекты связаны с обработкой исключений 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

См. также