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

How can I run GCC/Clang for static analysis? (warnings only)

本文关键字:警告 Clang 静态分析 GCC 何运行 运行      更新时间:2023-10-16

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

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

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

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

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

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