【问题标题】:Find long stretches of comments查找长篇评论
【发布时间】:2011-12-10 07:06:03
【问题描述】:

我必须维护一个大型旧项目项目,我的前辈(由于缺乏版本控制)已将大部分代码转换为 cmets。 现在我们拥有了版本控制中的所有内容,我觉得我们不再需要这些 cmets。 反正那些cmets里的代码已经烂了。

我想找到这些 cmets 中最长的。如果有一种方法可以为我提供所有具有 20 多个连续注释行的文件,那就太好了。 据我所知,只使用了//。没有必要找到/* */(甚至可能有害,因为它会找到所有烂 javadoc...叹息)。

【问题讨论】:

标签: java comments


【解决方案1】:

这个怎么样:

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

-E 使用“扩展”正则表达式

-R 使其成为递归目录

-n 打印带有行号的文件名

然后您可以轻松地处理此列表以查找连续匹配 - 只需查找每行输出的行号增加 1 的块。

这假设您不想像这样匹配行:

int x = foo; // some comment

但只有完全是 cmets 的行:

// 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

它不会正确处理名称中带有冒号的文件,但如果这是一个问题,应该不难修改以处理它。

【讨论】:

  • 只解决了部分问题,但这是我喜欢的解决方案。非常感谢。
【解决方案2】:

我会这样做:

每当我更新特定文件时,我都会在签入之前删除 cmets。这样“我会让露营地比你找到的更干净”。

相信我!!代码将在 3 个月内变得更干净。

【讨论】:

    【解决方案3】:

    我还没有尝试过,但Sonar 看起来很有希望。

    编辑:似乎安装很痛苦。

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 1970-01-01
      • 2013-06-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 1970-01-01
      • 2011-04-20
      相关资源
      最近更新 更多