4

我最近发现了 clang++ 的静态分析器功能,它非常适合用细齿梳检查我的代码以发现潜在的错误。我只是在我的 Makefile 中取消注释这一行:

CXXFLAGS += --analyze -Xanalyzer -analyzer-output=text

等等,我正处于深度错误检查模式。

然而,与此有关的一个小问题是,只要分析器在特定的 .cpp 文件中没有发现任何问题,就不会生成任何 .o 文件。

通常这没什么大不了的(我总是可以重新评论上面的行来构建一个实际的可执行文件),但通常当我看到分析器警告时,我想做的第一件事就是尝试解决潜在的问题然后重新运行make。

...这行得通,但是由于没有生成 .o 文件,因此 make 将从头开始重新分析所有 .cpp 文件,而不仅仅是自上次运行以来我实际修改的 .cpp 文件。这意味着我最终会花费大量时间重新检查未更改的 .cpp 文件。

我的问题是,有什么方法可以让静态分析器输出一个 .o 文件(它不必是有效的目标文件,只要是具有更新时间戳的任何文件),以便 Make 知道“干净” .cpp 文件不需要重新处理?(即使 Make 的工作方式与正常编译时相同)

4

1 回答 1

4

查看clang 静态分析器页面,并在那里获取软件包以供下载。您可以使用附带的scan-build工具来做您正在尝试的事情。

正常的使用方法是去掉上面的标志,然后运行:

$ scan-build make whatever

它应该“正常工作”。如果您不使用标准make变量名称,您可能需要传递更多标志或设置一些环境变量。

于 2013-09-10T23:57:04.193 回答