Functions to stub (-functions-to-stub)

Задайте функции к заглушке во время анализа

Описание

Задайте функции к заглушке во время анализа.

Для заданных функций, Polyspace® :

  • Игнорирует функциональное определение, даже если оно существует.

  • Принимает, что входным параметрам функции и выходным параметрам позволил полный спектр значений их тип.

Установите опцию

Пользовательский интерфейс (только десктопные решения): В вашей настройке проекта опция находится на узле Inputs & Stubbing.

Командная строка и файл опций: Используйте опцию -functions-to-stub. Смотрите информацию о командной строке.

Почему использование эта опция

Если вы хотите, чтобы анализ проигнорировал код в теле функции, можно заблокировать функцию.

Например:

  • Предположим, что вы не завершили запись функции и не хотите, чтобы анализ рассмотрел тело функции. Можно использовать эту опцию, чтобы заблокировать функцию и затем задать ограничения на ее возвращаемое значение и модифицируемые аргументы.

  • Предположим, что анализ тела функции неточен. Анализ принимает, что функция возвращает все возможные значения, которые позволяет функциональный тип возврата. Можно использовать эту опцию, чтобы заблокировать функцию и затем задать ограничения на ее возвращаемое значение.

Настройки

Никакое значение по умолчанию

Введите имена функций или выберите из списка.

  • Щелкните, чтобы добавить поле и ввести имя функции.

  • Щелкните, чтобы перечислить функции в вашем коде. Выберите функции из списка.

При вводе имен функций используйте или базовый синтаксис или, чтобы дифференцировать перегруженные функции, синтаксис аргумента. Для синтаксиса аргумента, аргументов отдельной функции с точками с запятой. См. следующий код и таблицу для примеров.

//simple function

void test(int a, int b);

//C++ template function

Template <class myType>
myType test(myType a, myType b);

//C++ class method

class A {
	public:
	int test(int var1, int var2);
};


//C++ template class method

template <class myType> class A
{
	public:
	myType test(myType var1, myType var2);
};

Функциональный типБазовый синтаксисСинтаксис аргумента
Простая функцияtesttest(int; int)
Функция шаблона C++testtest(myType; myType)
Метод класса C++A::testA::test(int;int)
Метод шаблонного класса C++A<myType>::testA<myType>::test(myType;myType)

Советы

  • Code Prover делает предположения об аргументах и возвращаемых значениях заблокированных функций. Например, Polyspace принимает, что возвращаемые значения заблокированных функций являются полным спектром. Эти предположения могут влиять на регистрации других разделов кода. Смотрите Предположения О Заблокированных Функциях.

  • Если вы блокируете функцию, можно ограничить аргументы множества значений функции и возвращаемое значение. Чтобы задать ограничения, используйте опцию анализа Constraint setup (-data-range-specifications).

  • Когда вы используете эту опцию, вы можете видеть изменение в метриках сложности кода уровня файла, таких как количество линий и прокомментировать плотность, потому что одно или несколько тел функции больше не анализируются.

  • Для функций C эти специальные символы являются allowed:( ) < > ; _

    Для функций C++ позволены эти специальные символы: ( ) < > ; _ * & [ ]

    Пробелы позволены для C++, но не допускаются функции C.

  • Вы не можете использовать эту опцию, чтобы заблокировать следующие функции C++:

    • constexpr функции

    • Функциональные блоки попытки, которые сопоставляют catch пункт с телом целой функции, например:

      Class()
          try : Class( 0.0 ) //delegate constructor
          {
              // ...
          }
          catch (...)
          {
              // exception occurred on initialization
          }

    • Обработайте функции по шаблону с пакетом параметра, например:

      template <class T, class... T2>
          X(T n, T n2, T2... rest): X(rest...) {
              v.insert(v.begin(), n);
              v.insert(v.begin(), n2);
          }

    • Функции с auto возвратите тип, например:

      template <typename F, typename... Args>
      inline decltype(auto) invoke(F&& func, Args&&... args)
      {
        return invoke_impl(eastl::forward<F>(func), eastl::forward<Args>(args)...);
      }

Информация о командной строке

Параметр: -functions-to-stub
Никакое значение по умолчанию
Значение: function1[, function2[,...]]
Пример (Code Prover): Polyspace Code Prover - источники file_name - функции к заглушке function_1, function_2
Пример (Сервер Code Prover): сервер программы автоматического доказательства полипробела кода - источники file_name - функции к заглушке function_1, function_2