Википедия поддерживает список инструментов статического анализа кода для различных языков (включая C).
Лично я использовал как PC-Lint
, так и Splint
. Лучший выбор зависит от типа приложения, которое вы написали. Однако, независимо от того, какой инструмент вы используете, соотношение сигнал / шум будет низким, пока вы не настроите инструмент и свой код должным образом.
PC-Lint
- самый мощный инструмент Lint, который я использовал. Если вы добавите его в существующий проект, отношение сигнал / шум может быть низким. Однако после правильной настройки инструмента и вашего кода его можно использовать как часть стандартного процесса сборки. В последнем крупном проекте, где я его использовал, мы установили его так, чтобы PC-Lint
предупреждения ломали сборку. Лицензии для PC-Lint стоят $ 389, но они того стоят.
Splint
- отличный инструмент с открытым исходным кодом. Я использовал его в нескольких проектах, но обнаружил, что это может быть сложно настроить при использовании компилятора с расширениями не-ANSI C (например, в проектах встроенных систем).
Valgrind
также стоит рассматривать как инструмент динамического анализа.
Вы специально запросили отзыв о SourceMonitor
. Этот инструмент предоставляет интересные метрики для вашего кода, но его следует использовать в качестве дополнения к хорошему инструменту Lint, поскольку он не обеспечивает такого рода анализ.
Как указано на их домашней странице, SourceMonitor
будет:
... выясните, сколько у вас есть кода и
определить относительную сложность
ваши модули. Например, вы можете использовать
SourceMonitor для определения кода
это, скорее всего, содержит дефекты
и, следовательно, требует официального пересмотра.
Я использовал его в недавнем проекте и нашел его простым в использовании (даже для кода встраиваемых систем). Показатель сложности является отличным ресурсом для разработки кода, который будет менее подвержен ошибкам и проще в обслуживании.
SourceMonitor
предоставляет хорошие графики его вывода, а также хорошо отформатированный XML, если вы хотите автоматизировать сбор метрик. Единственным недостатком является то, что инструмент работает только на Windows.