问题 如何运行GCC / Clang进行静态分析? (仅限警告)


如果没有编译代码,我希望GCC或Clang报告警告。
是否可以仅运行编译器进行静态分析?
我找不到一种方法来传递编译器警告标志并告诉它不要编译。

编辑:刚发现clang有一个 静态分析仪


10294
2017-12-28 16:44


起源

尝试 -fsyntax-only。 - Kerrek SB
@KerrekSB完美!谢谢 - Trevor Hickey
@KerrekSB:移动它来回答:) - Jack
@Jack:完成:-) - Kerrek SB


答案:


GCC和Clang都有选择权 -fsyntax-only 这使得编译器只执行语法检查而不进行任何实际编译。


11
2017-12-28 20:44



然而,重要的是要注意该标志对于clang更有用,对于G ++它不进行模板实例化,这意味着错过了许多可能的诊断 - Jonathan Wakely


除了其他回复, gcc 在编译期间进行一些分析(甚至在一些优化过程中)。所以你可以丢弃生成的代码,但仍然可以获得所有警告。 gcc -Wall -O -c code.c -o /dev/null 

请注意,您可以使用额外的通行证扩展GCC,执行一些额外的,特定于应用程序的检查和警告,例如:同 熔化 (扩展GCC的高级域特定语言)。

如果您想要强静态分析并且愿意为此目的提供额外的注释,请考虑 弗拉玛C.


4
2017-12-29 09:18