Эта тема показывает, как создать пользовательский список функций и проверки на использование этих функций в вашем коде с помощью Polyspace® Bug Finder™.
Прежде, чем создать или расширить средство проверки, идентифицируйте, удовлетворяет ли существующее средство проверки ваши требования. Эти средства проверки отмечают использование определенных функций:
Use of dangerous standard function
: Средство проверки отмечает функции, которые вводят риск переполнения буфера и имеют более безопасные альтернативы.
Use of obsolete standard function
: Средство проверки отмечает функции, которые удерживаются от использования стандартом C/C++.
, Unsafe standard encryption function
, Unsafe standard function
: Средства проверки отмечают функции, которые небезопасны использовать в чувствительных к безопасности контекстах.
Inefficient string length computation
, std::endl may cause an unnecessary flush
: Средства проверки отмечают функции, которые могут повлиять на производительность и иметь более эффективные альтернативы.
Однако вы можете хотеть поместить в черный список функции, которые не покрыты существующим средством проверки. Например, вы можете хотеть запретить использование функций обработки сигнала, таких как std::signal
:
#include <csignal>
#include <iostream>
namespace
{
volatile std::sig_atomic_t gSignalStatus;
}
void signal_handler(int signal)
{
gSignalStatus = signal;
}
int main()
{
// Install a signal handler
std::signal(SIGINT, signal_handler);
std::cout << "SignalValue: " << gSignalStatus << '\n';
std::cout << "Sending signal " << SIGINT << '\n';
std::raise(SIGINT);
std::cout << "SignalValue: " << gSignalStatus << '\n';
}
Если функции, которые вы хотите поместить в черный список, не покрыты вышеупомянутыми средствами проверки, используйте средство проверки Use of a forbidden function
. Создать черный список для средства проверки:
Перечислите функции в XML-файле в определенном синтаксисе.
Скопируйте файл шаблона code-behavior-specifications-template.xml
от папки
к перезаписываемому местоположению и изменяют файл. Введите каждую функцию в файл с помощью следующего синтаксиса после существующих подобных записей:polyspaceroot
\polyspace\verifier\cxx
<function name="funcname" behavior="FORBIDDEN_FUNC"/>
funcname
имя функции, которое вы хотите поместить в черный список.Задайте этот XML-файл в качестве аргумента для опции -code-behavior-specifications
.
Единственное средство проверки, которое может использоваться, чтобы поместить в черный список заданные функции, является средством проверки Use of a forbidden function
.
-code-behavior-specifications
| Use of a forbidden function