Java有一些非常好的开源静态分析工具,如FindBugs,Checkstyle和PMD.这些工具易于使用,非常有用,可在多个操作系统上运行并且免费.
可以使用商业C++静态分析产品.虽然拥有这样的产品很棒,但是学生的成本太高,而且通常很难获得试用版.
另一种方法是找到可在多个平台(Windows和Unix)上运行的开源C++静态分析工具.通过使用开源工具,可以对其进行修改以满足特定需求.寻找工具并非易事.
下面是其他人发现或建议的C++静态分析工具的简短列表.
-Weffc++GNU g ++ 选项(来自答案)什么是其他任何人都知道并可以推荐的便携式开源C++静态分析工具?
一些相关链接.
我想在代码库中找到未使用的函数 - 包括编译单元.我正在使用gcc作为我的编译器.
这是一个例子:
foo.c(假设合适foo.h):
void foo() {
....
}
void bar() {
....
}
Run Code Online (Sandbox Code Playgroud)
main.c:
#include <stdio.h>
#include "foo.h"
int main(void) {
bar();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我想得到关于foo()不被使用的警告.
有-Wunused-functiongcc选项:
-Wunused-function每当声明静态函数但未定义静态函数或未使用非内联静态函数时发出警告.-Wall启用此警告.
但它只适用于静态函数 - 它不会在上面的例子中产生警告.
我也接受可以为我做这个的工具/脚本/其他编译器的建议 - 尽管gcc如果可能的话我宁愿坚持下去.
我想从一个较大的项目中删除死代码,并希望从未使用的符号开始.反正有没有让链接器列出它已经优化的未使用的符号?我正在使用GNU链接器(LD)和GCC.
如果失败了,任何Binutils(readelf或objdump)都可以执行相同的功能吗?