В этом разделе показано, как создать пользовательский список функций и проверить использование этих функций в коде с помощью программы 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