Анализ кода не работает в VS 2010

Я создал консольное приложение, используя VS2010, как показано ниже

int test(int i)
{
if ( i == 0 )
return 0;
else
return 1;
int j = 2;
j++;

return j;
}

void deadCode(char * pa)
{
printf("%s", pa);
}

int _tmain(int argc, _TCHAR* argv[])
{
test(2);
return 0;
}

Я установил флажок «Включить анализ кода для C / C ++ при сборке» и выбрал «Набор правил» «Все правила Microsoft». При сборке проекта я получил

1> RunCodeAnalysis:

1> Запуск анализа кода …

1> Анализ кода завершен — 0 ошибок, 0 предупреждений

Я ожидал предупреждение «CA1804» для жирной части в test (), другое предупреждение должно отображаться для мертвого кода deadCode ().

У меня вопрос, почему Code Analysis не уловил дефекты? Я также попытался создать свой набор правил, который включал только предупреждение CA1804, но результат тот же, что и выше (Microsoft All Rules).

Есть идеи?

0

Решение

  • Неиспользуемые функции не являются «мертвым кодом». Представьте, что вы пишете библиотеку, которая может предоставлять пользователям функции, которые она сама не использует.
  • Что касается CA1804, я могу только сделать предположения: предположительно, анализ не идет достаточно глубоко, чтобы создать полный график управления и заметить, что код после if/else блок не может быть достигнут Но даже если бы он сделал полный анализ, я бы ожидал предупреждение «мертвый код» для части test() после if блок, а не «неиспользуемый локальный» предупреждение — если код был доступен, j будет использоваться.
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]