要插桩的函数 (-functions-to-stub)
指定分析期间要插桩的函数
描述
指定分析期间要插桩的函数。
对于指定的函数,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。
如果您对某个函数进行插桩,则可以对函数参量和返回值的范围设定约束。要指定约束,请使用分析选项
约束设置 (-data-range-specifications)。当您使用此选项时,您可能会看到文件级代码复杂度度量(例如代码行数和注释密度)发生变化,这是因为一个或多个函数体不再被分析。
对于 C 函数,允许使用以下特殊字符:
( ) < > ; _对于 C++ 函数,允许使用以下特殊字符:
( ) < > ; _ * & [ ]C++ 函数允许使用空格字符,但 C 函数不允许。
您不能使用此选项对以下 C++ 函数进行插桩:
constexpr函数将
catch子句与整个函数体关联的函数 try 块,例如: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 |