В этом разделе показано, как создать пользовательский список функций и проверить на использование этих функций в коде с помощью 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 name="FORBIDDEN_FUNC"/> </function>
funcname
- имя функции, которую вы хотите перечислить в черном списке. Удалите ранее существующие записи в файле, чтобы избежать предупреждений.Укажите этот XML- файл в качестве аргумента для опции -code-behavior-specifications
.
Единственная шашка, которая может использоваться для черного списка заданных функций, - это шашка Use of a forbidden function
.
-code-behavior-specifications
| Use of a forbidden function