要插桩的函数 (-functions-to-stub
)
在分析期间指定要插桩的函数
描述
指定在分析期间要插桩的函数。
对于指定的函数,Polyspace®:
即使函数定义存在,也忽略该函数。
假设函数的输入和输出具有其类型允许的全部值范围。
设置选项
使用以下方法之一设置选项:
Polyspace 用户界面(仅限桌面端产品):在工程配置中,选择输入和插桩节点,然后为该选项输入函数名称。
Polyspace 平台用户界面(仅限桌面端产品):在工程配置中,在静态分析选项卡上,选择输入和插桩节点,然后为该选项输入函数名称。
为何使用此选项
如果希望分析忽略函数体中的代码,可以对函数进行插桩。
例如:
假设您尚未完成函数的编写,并且不想让分析考虑函数体。您可以使用此选项来对函数进行插桩,然后指定其返回值和可修改参量的约束。
假设对函数体的分析不精确。分析假设函数返回函数返回类型允许的所有可能值。您可以使用此选项来对函数进行插桩,然后指定其返回值的约束。
设置
无默认值
输入函数名称或从列表中进行选择。
点击
可添加一个字段并输入函数名称。
点击
可列出代码中的函数。从列表中选择函数。
输入函数名时,请使用基本语法,或者为了区分重载函数,使用参量语法。对于参量语法,用分号分隔函数参量。请参阅以下代码和表格中的示例。
//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); };
函数类型 | 基本语法 | 参量语法 |
---|---|---|
简单函数 | test | test(int; int) |
C++ 模板函数 | test | test(myType; myType) |
C++ 类方法 | A::test | A::test(int;int) |
C++ 模板类方法 | A<myType>::test | A<myType>::test(myType;myType) |
提示
Code Prover 对插桩函数的参量和返回值进行假设。例如,Polyspace 假设插桩函数的返回值为全范围。这些假设可能会影响代码其他部分的检查。请参阅Code Prover Assumptions About Stubbed Functions (Polyspace Code Prover)。
如果对函数进行插桩,则可以限制函数参量和返回值的范围。要指定约束,请使用分析选项
约束设置 (-data-range-specifications)
。使用此选项时,文件级代码复杂度度量(如行数和注释密度)可能会发生变化,因为一个或多个函数体不再被分析。
对于 C 函数,允许使用以下特殊字符:
( ) < > ; _
对于 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 |
无默认值 |
值:
|
示例 (Code Prover):polyspace-code-prover -sources |
示例 (Code Prover Server):polyspace-code-prover-server -sources |