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