Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测只使用cppcheck从未使用的函数调用的函数? 我试图检测C++中未使用的函数。目前,我正在尝试使用cppcheck,但我不知道是否有可能或如何检测函数,这些函数只由本身未使用的函数使用_C++_Static Code Analysis_Cppcheck_Dead Code - Fatal编程技术网

如何检测只使用cppcheck从未使用的函数调用的函数? 我试图检测C++中未使用的函数。目前,我正在尝试使用cppcheck,但我不知道是否有可能或如何检测函数,这些函数只由本身未使用的函数使用

如何检测只使用cppcheck从未使用的函数调用的函数? 我试图检测C++中未使用的函数。目前,我正在尝试使用cppcheck,但我不知道是否有可能或如何检测函数,这些函数只由本身未使用的函数使用,c++,static-code-analysis,cppcheck,dead-code,C++,Static Code Analysis,Cppcheck,Dead Code,下面是我的小测试代码: int bla() { return 0; } int test() { return bla(); } int main() { int a = 0; int b = 0; return b; } 这是cppcheck通过我的当前设置检测到的: $ cppcheck --enable=style,unusedFunction test.cpp Checking test.cpp... [test.cpp:10]: (sty

下面是我的小测试代码:

int bla() {
    return 0;
}

int test() {
    return bla();
}

int main() {
    int a = 0;
    int b = 0;
    return b;
}
这是cppcheck通过我的当前设置检测到的:

$ cppcheck --enable=style,unusedFunction test.cpp 
Checking test.cpp...
[test.cpp:10]: (style) Variable 'a' is assigned a value that is never used.
Checking usage of global functions..
[test.cpp:5]: (style) The function 'test' is never used.
问题是它没有检测到函数bla未使用,因为它在测试中被调用。但测试从来没有被调用过,所以bla也不被调用。我希望除了main使用的函数之外的所有函数都标记为未使用

您知道cppcheck的一个选项,或者甚至是一个不同的静态代码分析工具,可以将bla检测为未使用的吗?

您可以尝试使用其查询语言CQLinq,您可以使用CQLinq高级查询创建,以根据需要过滤结果,例如,在您的情况下,您可以执行此查询:

from m in Methods where m.MethodsCallingMe
.Where(a=>!a.SimpleName.Contains(("test"))).Count()>0
select m

我使用callcatcher找到了自己的解决方案。这不是一个静态代码分析,但它能以我希望的方式工作。

可能重复的我没有看到任何真正的问题,您可以迭代地找到所有函数。删除
测试
,然后再次运行检查。