17

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

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

4

2 回答 2

18

GCC 和 Clang 都有一个选项-fsyntax-only,使编译器只执行语法检查而不进行任何实际编译。

于 2012-12-28T20:44:51.283 回答
3

除了其他回复外,还在gcc编译期间(甚至在一些优化过程中)进行了一些分析。因此,您可以丢弃生成的代码,但仍会收到所有警告,例如gcc -Wall -O -c code.c -o /dev/null

请注意,您可以通过额外的通行证来扩展 GCC,做一些额外的、特定于应用程序的检查和警告,例如使用MELT(一种用于扩展 GCC 的高级域特定语言)。

如果您想要强大的静态分析并愿意为此目的提供额外的注释,还可以考虑Frama C

于 2012-12-29T09:18:18.653 回答