Без компиляции кода я бы хотел, чтобы GCC или Clang сообщали о предупреждениях.
Можно ли запустить компилятор только для статического анализа?
Я не могу найти способ передать флаги предупреждения компилятора и сказать, чтобы он не компилировался.
редактировать: только что обнаружил, что Clang имеет статический анализатор
И GCC, и Clang имеют опцию -fsyntax-only
это заставляет компилятор выполнять только проверку синтаксиса без какой-либо фактической компиляции.
В дополнение к другим ответам, gcc
делает некоторый анализ во время компиляции (и даже во время некоторых проходов оптимизации). Таким образом, вы можете отказаться от сгенерированного кода и при этом получить все предупреждения, например, с помощью gcc -Wall -O -c code.c -o /dev/null
Обратите внимание, что вы можете расширить GCC своими дополнительными пропусками, выполнив некоторые дополнительные, специфичные для приложения проверки и предупреждения, например, с ПЛАВИТЬСЯ (язык высокого уровня для расширения GCC).
Если вы хотите провести строгий статический анализ и хотите дать дополнительные аннотации для этой цели, также подумайте Frama C.