Поиск закомментированного кода в файлах в Eclipse - PullRequest
9 голосов
/ 10 ноября 2010

Существует ли быстрый способ найти весь закомментированный код в файлах Java в Eclipse? Любой вариант в Поиске, возможно, или любое дополнение, которое может сделать это?

Должен быть в состоянии найти только закомментированный код, но не обычные комментарии.

Ответы [ 6 ]

18 голосов
/ 06 октября 2011

В Eclipse я просто выполняю поиск файлов с включенным флажком регулярного выражения:

(/\*.*;.*\*/)|(//.*;)

Он находит точки с запятой в

// Этих;

и эти;* /

У меня работает.

3 голосов
/ 14 января 2011

Сонар может это сделать: http://www.sonarsource.org/commented-out-code-eradication-with-sonar/

1 голос
/ 10 ноября 2010

Вы можете пометить свой собственный закомментированный код тегом задачи.Вы можете создавать свои собственные теги задач в Eclipse.

В меню перейдите в Window -> Preferences.В диалоговом окне «Параметры» выберите «Основные» -> «Редакторы» -> «Редакторы структурированного текста» -> «Теги задач».

Добавьте соответствующий тег задачи, например «КОММЕНТАРИЙ».Установите приоритет «Низкий».

Затем любой код, который вы комментируете, можно пометить тегом задачи COMMENTED.Список этих тегов задач вместе с их местоположением отображается в представлении «Задачи».

0 голосов
/ 11 ноября 2010

Если проблема заключается в том, чтобы найти закомментированный код, то нужен способ найти комментарии и решить, может ли комментарий содержать код.

Простой способ сделать это - поискдля комментариев, которые содержат похожие на код вещи.Я был бы склонен охотиться за комментариями, содержащими ";"символ (или какой-либо другой редкий индикатор, такой как "=");будет довольно сложно иметь какой-либо интересный закомментированный код, который не содержит этого, и по моему опыту с комментариями я не вижу многих, которые пишут люди, которые содержат это.Поиск в регулярном выражении должен быть довольно простым, даже если он обнаружил несколько дополнительных ложных срабатываний (например, // в строковом литерале).

Более сложный способ сделать это - использовать лексер или парсер Java.Если у вас есть лексер, который возвращает комментарии к токенам (не все это делают, компиляторы Java не заинтересованы в комментариях), то вы можете просто отсканировать лексемы для комментариев и выполнить проверку точки с запятой, которую я описал выше.При таком подходе вы не получите ложных срабатываний для комментариев, подобных вещам в строковых литералах.

Если у вас есть реинжиниринг парсера , который фиксирует комментарии как часть AST (например,как наш внешний интерфейс Java SD ), вы можете механически сканировать дерево разбора для комментариев, передавать контекст комментария обратно в синтаксический анализатор, чтобы увидеть, является ли контент похожим на код, и сообщать о любом, который проходит этот тест по модулю некоторогоРазмер ошибок в зависимости от размера (10 ошибок по 15 символов означают «действительно комментарий»).Теперь «подобный коду» тест требует, чтобы анализатор реинжиниринга был готов распознавать любую подстроку языка (Java).Наш инструментарий реинжиниринга программного обеспечения DMS , лежащий в основе внешнего интерфейса Java, фактически может сделать это, используя доступ к грамматике, скрытой во внешнем интерфейсе, так как он готов начать анализ для любого языкового (не) терминала, и этоВопрос в том, «можете ли вы найти последовательность (не) терминалов, которые потребляют строку?».

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

0 голосов
/ 10 ноября 2010

@ Йорн сказал:

Я думаю, [ ОП ] хочет найти закомментированный код, а не код с комментарием.

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

Теперь в IDE обычно есть функция «переключать комментарии», которая комментирует код определенным образом. Было бы целесообразно написать инструмент / плагин, который соответствует стилю, созданному конкретная IDE. Но, вероятно, этого недостаточно, особенно потому, что переформатирование кода обычно избавляет от характеристик, которые делают закомментированный код распознаваемым.

0 голосов
/ 10 ноября 2010

Вы можете выполнить поиск в Eclipse.

Все, что вам нужно для поиска, это /* и //

Однако вы найдете только те файлы, которые содержат это выражение,а не фактический контент, который, как я полагаю, вам нужен.

Однако, если вы используете Linux, вы можете легко получить все комментарии с одним вкладышем.

...