Как найти неиспользуемые атрибуты/методы в Visual C++ 2008
-
02-07-2019 - |
Вопрос
Есть ли способ определить неиспользуемые атрибуты/методы в Visual C++ 2008 Professional?Если это невозможно по умолчанию, также очень приветствуются рекомендации сторонних инструментов.
Спасибо,
Флориан
Редактировать: nDepend работает только для сборок .NET.Я ищу что-то, что можно использовать с собственными приложениями C++.
Решение
Пытаться ПК-Линт.Это довольно хорошо для поиска избыточного кода.Девятую версию еще не пробовал.Настройка версии 8 требует некоторого времени.Попробуйте онлайн-интерактивную демонстрацию.
Другие советы
Я лично не использовал их инструменты повышения производительности (я использую их комплект управления Windows), но похоже, что у DevExpress есть рефакторинг C++ под названием Рефакторинг!для С++.Я не сразу заметил те функции, которые вам нужны, но, может быть, они у них есть?
Средство проверки покрытия может отображать неиспользуемый код C++ (но не атрибуты).Он делает это динамически, поэтому вам нужно «тренировать» приложение, чтобы получить результаты:http://successfulsoftware.net/2008/03/10/coverage-validator/
Сложность заключается в том, что многие функции в C++ должны существовать, даже если они не вызываются.Особенно это может вызвать Boost, но даже обычный код STL может это сделать.И ваш код должен подыгрывать.Вы можете определить вектор копирования, потому что std::vector формально требует этого.Но если вы не создадите экземпляр какого-либо члена std::vector, который действительно копирует T, ваш копирующий вектор останется неиспользованным.
Даже если в этом нет необходимости, они часто существуют ради безопасности.Например, объявление частного конструктора копирования может предотвратить непреднамеренное копирование объекта.Без частного объявления компилятор определил бы для вас общедоступный почленный копирующий вектор.Итак, это «неиспользуемые» и хотите ли вы, чтобы вас о них предупредили?
PC-Lint очень мощный инструмент, но его сложно использовать.Конечно, это довольно хорошо описывает C и C++, не так ли?
Еще один инструмент, который я считаю превосходным, — это Whole Tomato's. Визуальный помощник X который интегрируется прямо в IDE.
В C++ есть несколько серьезных ошибок при поиске кода, на который нет ссылок:шаблоны, обратные вызовы и обработчики сообщений могут иметь решающее значение для вашего проекта, но никогда не вызываются напрямую.Например, обработчик потока не вызывается напрямую, но является параметром при создании нового потока.Сообщения типа «On_buttonpress» в проектах MFC или WTL также будут отображаться как невызываемые методы.
Как только вы их найдете, вы можете настроить PC-Lint так, чтобы он игнорировал их, но в первый раз это требует много работы.
nDepend сделает это, а также уберется в доме и выведет собаку на прогулку.Существует бесплатная версия Nagware.
Следующий оператор языка запросов кода предоставит вам список неиспользуемых методов.
WARN IF Count > 0 IN SELECT TOP 10 METHODS WHERE MethodCa == 0 AND
!IsPublic AND !IsEntryPoint AND !IsExplicitInterfaceImpl AND
!IsClassConstructor AND !IsFinalizer