我必須維護一個大的舊項目項目,我的先行者(缺乏版本控制)已將大量代碼轉換爲註釋。 現在我們掌握了版本控制的一切,我覺得我們不再需要這些評論。 無論如何,這些評論中的代碼已經爛透了。尋找很長的評論
我想找到那些評論中最長的。有一種方式可以讓我擁有所有具有超過20條連續註釋行的文件。 據我所知只有//
已被使用。找到/* */
是沒有必要的(可能甚至是有害的,因爲它會發現所有腐爛的javadoc ......嘆息)。
我必須維護一個大的舊項目項目,我的先行者(缺乏版本控制)已將大量代碼轉換爲註釋。 現在我們掌握了版本控制的一切,我覺得我們不再需要這些評論。 無論如何,這些評論中的代碼已經爛透了。尋找很長的評論
我想找到那些評論中最長的。有一種方式可以讓我擁有所有具有超過20條連續註釋行的文件。 據我所知只有//
已被使用。找到/* */
是沒有必要的(可能甚至是有害的,因爲它會發現所有腐爛的javadoc ......嘆息)。
Howabout這樣的:
grep -ERn '^[[:space:]]*//' root_directory
的-E
採用 '擴展' 的正則表達式
的-R
使得遞歸目錄
的-n
打印的filnames行號
然後你可以輕鬆處理此列表以查找連續匹配 - 只需查找塊即可將行號增加一行輸出。
這是假設你不想匹配這樣的臺詞:
int x = foo; // some comment
但只有線是完全評論:
// this is a comment
更新:
這是一個簡短的Python腳本,用於處理上述的輸出:
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
它不會與他們的名字冒號正確對待文件,但不應該是很難修改處理,如果這是一個問題。
我還沒有嘗試過,但Sonar看起來很有希望。
編輯:似乎安裝是一種痛苦。
我會做這樣的:
每當我更新一個特定的文件,我會在檢查之前刪除評論這樣一來「我將離開營地清潔比你發現它」一個接一個。
相信我!代碼將在3個月內更清潔。
「[是否有快速的方法來查找所有在Eclipse中的java文件註釋掉的代碼?](http://stackoverflow.com/questions/4144213/is-there-a-quick-way-to-找到所有的註釋掉代碼跨java文件在ecl)「是一個類似的問題。我鏈接[這個答案](http://stackoverflow.com/questions/4144213/is-there-a-quick-way-to-find-all-the-commented-out-code-across-java-files-in -ecl/7677471#7677471)。 – bbuser