我必须维护一个大型旧项目项目,我的先行者(由于缺乏版本控制)已将大部分代码转换为注释。 现在我们已经拥有了版本控制中的所有内容,我觉得我们不再需要这些注释了。 无论如何,这些评论中的代码已经腐烂了。
我想找到最长的评论。如果有一种方法可以让我拥有超过20个连续注释行的文件,那就太好了。
据我所知,只有//
被使用过。找不到/* */
是不必要的(可能甚至是有害的,因为它会发现所有腐烂的javadoc ......叹息)。
答案 0 :(得分:1)
如何:
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
它不会正确处理名称中冒号的文件,但如果这是一个问题,不应该很难修改以处理它。
答案 1 :(得分:0)
我还没有尝试过,但Sonar看起来很有希望。
编辑:似乎安装很痛苦。答案 2 :(得分:0)
我会这样做:
每当我更新某个特定文件时,我会在办理登机手续之前删除这些评论。以这种方式“我会一个接一个地离开露营地更清洁”。
相信我!代码将在3个月内更清洁。