Узнайте, какой код никогда не вызывается в проекте C ++ в Visual Studio 2012

Я использую VS2012, и я хотел бы знать, какой код в моем проекте никогда не вызывается. Как мне это сделать?

Вот меню, которое я опробовал для анализа мертвого кода, но не нашел его здесь.

введите описание изображения здесь

0

Решение

Краткий ответ: Visual Studio не поддерживает это1.

Средства проверки кода, которые могут найти неиспользуемые функции, доступны только для управляемого кода (например, .NET), например, CA1811: избегайте невостребованного личного кода.

Статический анализ кода C ++ намного сложнее, и есть только несколько Анализ кода для предупреждений C / C ++ связанный с неиспользуемым / избыточным / недоступным кодом:

  • C6235: «(<ненулевая константа> || <выражение>) всегда ненулевая константа
  • C6236: «(<выражение> || <ненулевая константа>) всегда ненулевая константа
  • C6237: «(<нуль> && <выражение>) всегда ноль. <выражение> никогда не оценивается и может иметь побочные эффекты
  • C6239: «(<ненулевая константа> && <выражение>) всегда оценивает результат <выражение>, Вы намеревались использовать побитовый оператор?
  • C6240: «(<выражение> && <ненулевая константа>) всегда оценивает результат <выражение>, Вы намеревались использовать побитовый оператор?
  • C6259: «помеченный код недоступен :(<выражение> & <постоянная>) в switch-expr невозможно оценить <случай метки>»
  • C6269: «возможно неправильный порядок операций: разыменование игнорируется»
  • C6285: «(<ненулевая константа> || <ненулевая константа>) всегда ненулевая константа. Вы намеревались использовать побитовый оператор?
  • C6286: «(<ненулевая константа> || <выражение>) всегда ненулевая константа. <выражение> никогда не оценивается и может иметь побочные эффекты
  • C6287: «избыточный код: левое и правое подвыражения идентичны»
  • C6288: «Неверный оператор: взаимное включение закончено && всегда ноль. Вы намеревались использовать || вместо?»
  • C6289: «Неверный оператор: взаимное исключение над || всегда является ненулевой константой. Вы намеревались использовать && вместо?»
  • C6294: «Неверно определен цикл for: начальное условие не удовлетворяет тесту. Тело цикла не выполнено»
  • C6313: «Неверный оператор: флаг с нулевым значением не может быть проверен с помощью побитового и. Используйте тест на равенство, чтобы проверить флаги с нулевым значением»
  • C6316: «Неверный оператор: проверенное выражение является константой и не равно нулю. Используйте побитовое значение -и чтобы определить, установлены ли биты»
  • C6319: «Использование запятого в проверенном выражении приводит к тому, что левый аргумент игнорируется, если он не имеет побочных эффектов»

Все эти правила указывают либо на ошибку, либо указывают на избыточный код, который никогда не выполняется. Список применяется к правилам анализа кода, реализованным в Visual Studio 2017. Предыдущие версии Visual Studio могут не предоставлять средства проверки для всех из них.


1 Это верно вплоть до Visual Studio 2017, включая самый последний выпуск на момент написания статьи.

2

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

Вы можете попробовать CppDepend Addin, где вы можете использовать CQLinq для запроса базы кода и получить то, что может быть обнаружено статическим анализом как мертвый код.

1

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