2012-12-28 11 views
10

Bez kompilowania kodu, chciałbym GCC lub Clang zgłaszać ostrzeżenia.
Czy można uruchomić kompilator tylko do analizy statycznej?
Nie mogę znaleźć sposobu przekazywania flag ostrzegawczych kompilatora i informowania go, aby nie kompilował.Jak mogę uruchomić GCC/Clang do analizy statycznej? (tylko ostrzeżenia)

edit: właśnie odkryli, że dzyń ma static analyser

+5

Wypróbuj '-fsyntax-only'. –

+0

@KerrekSB perfect! dziękuję –

+0

@KerrekSB: Przenieś to, aby odpowiedzieć :) – Jack

Odpowiedz

10

Zarówno GCC i Clang posiada opcję -fsyntax-only sprawia, że ​​kompilator wykonać tylko sprawdzanie składni, bez rzeczywistego kompilacji.

+6

Jednak ważne jest, aby pamiętać, że flaga jest o wiele bardziej przydatna dla klang, dla G ++ to nie robi instancji szablonu, co oznacza wiele możliwej diagnostyki są pomijane –

4

Oprócz innych odpowiedzi, gcc przeprowadza pewną analizę podczas kompilacji (a nawet podczas niektórych przejść optymalizacyjnych). Możesz więc odrzucić wygenerowany kod i nadal otrzymywać wszystkie ostrzeżenia z np. gcc -Wall -O -c code.c -o /dev/null

Należy zauważyć, że można rozszerzyć GCC o dodatkowe przepustki, wykonując dodatkowe, specyficzne dla aplikacji kontrole i ostrzeżenia, np. z MELT (język specyficzny dla wysokiego poziomu w celu rozszerzenia GCC).

Jeśli potrzebujesz silnej analizy statycznej i chcesz podać dodatkowe adnotacje do tego celu, rozważ również Frama C.

Powiązane problemy