2011-10-18 62 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个月内更清洁。