Группы дефекта Bug Finder

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

Эта тема дает обзор различных групп.

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

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

Смотрите также