Быстрый и простой способ удалить «мертвый» (закомментированный) код - PullRequest
15 голосов
/ 11 марта 2010

Я работаю с базой унаследованного кода, которая содержит тысячи строк закомментированного кода. Я знаю, что предыдущий кодер хотел сохранить всю свою тяжелую работу для потомков, а не просто удалить ее, но: я никогда не буду читать ее, а она только мешает. Одним из проблемных примеров является то, что когда я выполняю текстовый поиск определенных сегментов кода, я получаю десятки «ложных» попаданий в закомментированном коде. PITA.

Существует ли быстрый / простой способ обнаружения больших блоков закомментированного кода? Умный RegEx возможно?

В настоящее время я работаю в VB.NET, и символ комментария является единственным апострофом.

Ответы [ 8 ]

13 голосов
/ 11 марта 2010

Вы можете использовать поиск по регулярному выражению. Искать

^.*'.*$

Чтобы найти одну строку с комментарием. Возможно, вы захотите найти как минимум 3 строки, начинающиеся с комментария:

^.*'.*\n.*'.*\n.*'.*$

Держите кошку подальше от клавиатуры.

4 голосов
/ 16 августа 2010
(^\s*//.*\n)^10

Найдите 10 одновременно закомментированных строк в стиле //.

Закомментированные тесты:

\s*//\s*\[Test\].*\n
4 голосов
/ 11 марта 2010

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

Я был в этой ситуации в прошлом (слишком часто), и в итоге я удаляю закомментированный код, работая над различными модулями.

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

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

1 голос
/ 12 сентября 2016

Для всех C # людей, которые попали сюда, используйте следующее регулярное выражение, чтобы найти закомментированные строки.

(^|[^/])//[^/]
1 голос
/ 20 апреля 2011
0 голосов
/ 23 мая 2017

Я знаю, что это старая тема, но уловка, которая мне помогает, не упоминалась.

Я ищу это регулярное выражение:

(^ \ S *. =. \ п) ^

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

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

0 голосов
/ 11 марта 2010

Я бы предложил написать или найти макрос для Visual Studio, который поможет удалить комментарии.

Некоторая псевдология:

  • начать с номера строки, прочитать первый символ. запомните этот номер строки.
  • если это символ комментария VB ', то продолжить
  • читать первый символ следующей строки. если это символ комментария, продолжайте.
  • при поиске строки, не являющейся символом комментария, проанализируйте количество пройденных строк.
  • если число пройденных строк соответствует вашему порогу n , удалите их.
0 голосов
/ 11 марта 2010

Для этого предназначены системы контроля версий.

Я бы удостоверился, что он находится под контролем версий (надеюсь, это не Visual Source Safe), проверил его, удалил весь закомментированный код и вернул его обратно.

Я бы также не рекомендовал практику в вашей команде разработчиков на будущее.

...