如何检测仅使用cppcheck从未使用的函数调用的函数?

时间:2015-06-08 14:04:32

标签: c++ static-code-analysis cppcheck dead-code

我试图在C ++中检测未使用的函数。目前我正在尝试使用cppcheck,但我不知道是否可能或如何检测功能,这些功能仅供未使用的功能使用。

这是我的小测试代码:

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检测为未使用,因为它在测试中被调用。但测试从未被调用过,因此也不是。我希望除main之外的所有函数都标记为未使用。

你知道cppcheck的一个选项,甚至是一个将bla检测为未使用的静态代码分析工具吗?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

我使用callcatcher http://www.skynet.ie/~caolan/Packages/callcatcher.html找到了自己的解决方案。它不是静态代码分析,但它的工作方式非常好,我希望它能如何工作。