Отметьте или небезопасные функции устаревшие Используя средства проверки средства поиска ошибки

Эта тема показывает, как создать пользовательский список функций и проверки на использование этих функций в вашем коде с помощью 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. Создать черный список для средства проверки:

  1. Перечислите функции в XML-файле в определенном синтаксисе.

    Скопируйте файл шаблона code-behavior-specifications-template.xml от папки polyspaceroot\polyspace\verifier\cxx к перезаписываемому местоположению и изменяют файл. Введите каждую функцию в файл с помощью следующего синтаксиса после существующих подобных записей:

    <function name="funcname">
        <behavior name="FORBIDDEN_FUNC"/>
    </function>
    где funcname имя функции, которое вы хотите поместить в черный список. Удалите ранее существующие записи в файле, чтобы избежать предупреждений.

  2. Задайте этот XML-файл в качестве аргумента для опции -code-behavior-specifications.

Средства проверки, которые могут быть расширены

Единственное средство проверки, которое может использоваться, чтобы поместить в черный список заданные функции, является средством проверки Use of a forbidden function.

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

|

Похожие темы