我最近发现了clang ++的静态分析器功能,使用细齿梳查找我的代码来发现潜在的错误非常棒。我只是在Makefile中取消注释这一行:
CXXFLAGS += --analyze -Xanalyzer -analyzer-output=text
et瞧,我正处于深度检查模式。
然而,一个小问题是,只要分析器在特定的.cpp文件中没有发现任何问题,就不会生成任何.o文件。
通常情况下这不是什么大问题(我总是可以重新评论上面一行来构建一个实际的可执行文件),但通常当我看到一个分析器警告时,我要做的第一件事就是尝试修复底层问题,然后重新运行make。
...有效,但由于没有生成.o文件,make将从头开始重新分析所有.cpp文件,而不仅仅是我上次运行后实际修改过的.cpp文件。这意味着我最终会花费大量时间重新检查尚未更改的.cpp文件。
我的问题是,有没有办法让静态分析器输出.o文件(它不必是一个有效的目标文件,只是任何具有更新时间戳的文件),以便Make知道那个"清洁" .cpp文件不需要重新处理? (即make make work与正常编译时的工作方式相同)
答案 0 :(得分:4)
查看clang static analyzer page,然后获取包下载。您可以使用附带的scan-build
工具来完成您正在尝试的工作。
正常的使用方法是摆脱上面的标志,然后运行:
$ scan-build make whatever
它应该'正常工作'。如果不使用标准make
变量名,则可能需要传递更多标志或设置一些环境变量。