2011-10-18 107 views
1

我必須維護一個大的舊項目項目,我的先行者(缺乏版本控制)已將大量代碼轉換爲註釋。 現在我們掌握了版本控制的一切,我覺得我們不再需要這些評論。 無論如何,這些評論中的代碼已經爛透了。尋找很長的評論

我想找到那些評論中最長的。有一種方式可以讓我擁有所有具有超過20條連續註釋行的文件。 據我所知只有//已被使用。找到/* */是沒有必要的(可能甚至是有害的,因爲它會發現所有腐爛的javadoc ......嘆息)。

+0

「[是否有快速的方法來查找所有在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

回答

1

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 

它不會與他們的名字冒號正確對待文件,但不應該是很難修改處理,如果這是一個問題。

+0

只解決了部分問題,但是解決了我的問題。非常感謝。 – bbuser

+0

我沒有時間去嘗試,但再次感謝。 – bbuser

0

我還沒有嘗試過,但Sonar看起來很有希望。

編輯:似乎安裝是一種痛苦。

0

我會做這樣的:

每當我更新一個特定的文件,我會在檢查之前刪除評論這樣一來「我將離開營地清潔比你發現它」一個接一個。

相信我!代碼將在3個月內更清潔。