Я создал приложение консоли с помощью VS2010, как показано нижеАнализ кода не работает в VS 2010
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++ на Build» и выберите Rule Set «Microsoft Все правила», когда я построил этот проект, я получил
1> RunCodeAnalysis:
1> Запуск анализа кода ...
1> Анализ кода Complete - 0 ошибка (ы), 0 предупреждение (ы)
Я ожидал, что предупреждение «CA1804» для жирной части в тесте() должно быть отображено другое предупреждение для мертвого кода deadCode().
Мой вопрос: почему анализ кода не выявил недостатков? Я также попытался создать свой набор правил, который только активировал предупреждение CA1804, но результат такой же, как и выше (все правила Microsoft).
Любые идеи?
Я бы ожидал, что он найдет недостижимый код внутри метода. – ChrisF
для первой части, да, это верно для библиотеки. но мой проект генерирует исполняемый файл, поэтому неиспользуемая функция означает «мертвый код». – Liyilin
@ Liyilin Да, но как должен статический анализатор кода заметить это? Для этого потребуется проверить конфигурацию проекта. Более того, не так важно поймать этот «мертвый код»! Мертвый код в функциях почти всегда означает ошибку программиста - вы реализовали логику, которая никогда не достигалась. Неиспользуемые функции могут существовать по целому ряду причин: Код, который был реализован, но еще не используется *, код библиотеки, ... – us2012