Вопрос

Есть ли способ определить неиспользуемые атрибуты/методы в 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top