如何检测函数,只有从未使用的函数调用使用cppcheck



我正在尝试检测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未使用,因为它在test中被调用。但是test永远不会被调用,所以bla也不会被调用。我希望除了main使用的函数之外的所有函数都被标记为未使用。

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

你可以尝试CppDepend和它的查询语言CQLinq,你可以用CQLinq创建高级查询来过滤你想要的结果,例如在你的情况下,你可以执行这个查询:

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

我使用callcatcher http://www.skynet.ie/~caolan/Packages/callcatcher.html找到了自己的解决方案。这不是一个静态代码分析,但它的工作方式正是我想要的

这里是完整的注释和描述CQLinq查询,用于查找潜在的死方法。也有规则来查找这些变量和字段:https://www.ndepend.com/default-rules/NDepend-Rules-Explorer.html?ruleid=ND1701 !

相关内容

  • 没有找到相关文章

最新更新