Найти длинные участки комментариев - PullRequest
1 голос
/ 18 октября 2011

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

Я бы хотел найти самый длинный из этих комментариев. Было бы хорошо иметь способ, который дает мне все файлы, которые имеют, скажем, более 20 последовательных строк комментариев. Насколько я могу судить, был использован только //. Поиск /* */ не является необходимым (вероятно, даже вредным, потому что он нашел бы весь гнилой javadoc ... вздох).

Ответы [ 3 ]

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

Как это:

grep -ERn '^[[:space:]]*//' root_directory

-E использует "расширенные" регулярные выражения

* -R делает его рекурсивными каталогами

-n печатаетимена файлов с номерами строк

Затем вы можете легко обработать этот список для поиска последовательных совпадений - просто найдите блок, в котором номер строки увеличивается на единицу на строку вывода.

Это предполагает, что вы нене хотите сопоставлять строки следующим образом:

int x = foo; // some comment

Но только строки, которые являются полностью комментариями:

// this is a comment

Обновление :

Вот короткий Python-скрипт для обработки выходных данных выше grep:

import sys

filenames_of_interest = set()
filename = None
prev_line_num = 0
comment_count = 0
for line in sys.stdin.readlines():
        this_filename, line_num, _ = line.split(':',2)
        line_num = int(line_num)
        if this_filename != filename:
                comment_count = 0
                filename = this_filename
        elif line_num != prev_line_num + 1:
                comment_count = 0
        prev_line_num = line_num
        comment_count += 1
        if comment_count > 20:
                filenames_of_interest.add(filename)

print "files with blocks of comments:"
for i in filenames_of_interest:
        print ' ', i

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

0 голосов
/ 19 октября 2011

Я бы сделал так:

Всякий раз, когда я обновляю определенный файл, я бы удалил комментарии перед регистрацией. Таким образом, «я оставлю уборщика кемпинга, чем вы его нашли» один за другим.

Поверь мне !! код станет чище через 3 месяца.

0 голосов
/ 19 октября 2011

Я еще не пробовал, но Сонар выглядит многообещающе.

РЕДАКТИРОВАТЬ: кажется, что установка является боль.

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