FxCop (или эквивалент) для не-Net C ++ кода - PullRequest
6 голосов
/ 10 февраля 2010

Есть ли способ заставить FxCop анализировать неуправляемый код C ++? Установка флага / clr позволила FxCop открывать .exe. Он находит много элементов C ++, но анализ кода очень слабый. Например, следующий код был пропущен:


int i=0;
if (i=2) printf("Don't worry..everything will be okay.");

Мне нужен инструмент, который может поймать i=2 и предупредить, что он должен быть i==2. Любой совет, как сделать FxCop более тщательным, или другой инструмент, который другие сочли полезным?

Ответы [ 2 ]

4 голосов
/ 10 февраля 2010

MSVC (по крайней мере VC9 / VS2008) уже предупреждает о вашем конкретном примере:

warning C4706: assignment within conditional expression

(Упс: я только что понял, что мои настройки тестовых проектов проверены до уровня предупреждения 4 - / W4. MSVC не выдает это предупреждение при настройке по умолчанию). Поэтому настройте параметры проекта на / W4 и получите больше диагностики (надеюсь, без особого шума).

Я нахожу предупреждения в VC9 довольно приличными, и вы можете легко настроить компилятор так, чтобы они воспринимались как ошибки, если вы хотите вызвать проблему.

Редакция Visual Server для Team Server содержит поддержку PREfast - инструмента статического анализа от Microsoft (опция есть в расширенном / включенном анализе кода для C / C ++ проекта C ++). Вы также можете получить инструмент в комплекте драйверов Windows и / или Windows SDK, хотя я не могу поручиться за инструкции по интеграции версии WDK / SDK в Visual Studio:

Еще одна альтернатива, которую некоторым людям нравится (несвободная): Продукт Gimpel's PC-Lint .

0 голосов
/ 10 февраля 2010

мы используем укрытие, не бесплатное, а потрясающий инструмент статического анализа

...