Используйте компилятор / компоновщик для очистки кода C ++ - PullRequest
5 голосов
/ 15 октября 2008

Я использую VS2008 для проекта C ++. Код довольно старый и прошел через много рук. Существует несколько иерархий классов, функций, перечислений и т. Д., Которые больше не используются.

Есть ли способ заставить компилятор / компоновщик перечислить идентификаторы, которые были объявлены или определены, но нигде не упоминаются?

Ответы [ 7 ]

5 голосов
/ 15 октября 2008

VS будет предупреждать об идентификаторах, объявленных внутри функции и не используемых, вам может потребоваться перейти на уровень предупреждения 4, но для глобальных переменных и поиска многих других потенциальных проблем, вам лучше попробовать lint или визуальный линт

4 голосов
/ 15 октября 2008

PC-Lint анализ всего проекта (который анализирует несколько файлов вместе) может сделать это. Пожалуйста, не стесняйтесь связаться со мной, если вам нужна помощь в настройке.

1 голос
/ 15 октября 2008

PC-Lint сделает это. Однако не запускайте его со всем одним. Я сделал и имел 1,2 миллиона ошибок - что равнялось ~ 5 на строку. Это значительно продвинулось, потому что почти каждый класс пользовательского интерфейса, на который ссылаются resource.h и resource.h, перечисляет множество #defines, на которые lint говорит «replace define with const int». Для хорошего начала прочитайте этот пост в блоге Power of 2 .

1 голос
/ 15 октября 2008
1 голос
/ 15 октября 2008

Не уверен насчет Visual C ++, но g ++ предупреждает о неиспользуемых переменных. Вы можете попробовать передать свой код через g ++.

0 голосов
/ 15 октября 2008

Со ссылкой на пост Грэма: FWIW На самом деле я никогда не видел сообщения «заменить определения константой int» с файлами resource.h - хотя некоторые другие (ранее определенные в том же месте) могут быть проблемой.

Независимо от того, если конкретное сообщение PC-Lint мешает найти то, что вы ищете, просто отключить его, используя -e в вашем файле options.lnt. Также стоит помнить о опции -w, которая позволяет глобально установить уровень предупреждения (например, -w0 + e766 отключает все, кроме сообщения 766).

Для неиспользуемых символов и объявлений вам нужно искать такие сообщения, как 755 (Информация - глобальный макрос не указан), 758 (Информация - глобальный перечисление не указано), 769 (Информация - глобальная константа перечисления не упоминается) и 1714 (информация - функция-член не указана). Помните, что они подавляются при анализе одного файла, поэтому вам нужно выполнить анализ всего проекта, чтобы увидеть их.

0 голосов
/ 15 октября 2008

Для самых очевидных неиспользованных объявлений высокий уровень предупреждения позаботится об этом.

Что касается идентификации неиспользуемых фрагментов кода, то мертвецки (не являющийся центром ночной криминальной драмы, но механизмом, который отбирает неиспользуемый код во время связывания), только укажет вам путь - то, чего вы действительно хотите инструмент анализа покрытия кода. Есть много, к сожалению, все они довольно дорогие.

Также поможет надежный редактор с хорошим механизмом маркировки контекста и графиком вызовов.

...