自动从.java文件,脚本中删除代码行

时间:2010-11-11 09:09:15

标签: java scripting ant

作为代码清理的一部分,并迁移到新的测试框架,我需要从所有测试类(几乎1000+ * .java文件)中删除具有参数“String name”的构造函数。 例如,注释中显示的部分需要删除。

class A extends TestCase{
   //This need to be deleted.
   public A(String name){
      super(name);
   }
   // End of part to be deleted

}

有没有办法使用ant脚本或使用java本身自动执行此操作?

2 个答案:

答案 0 :(得分:3)

我认为你可以从一个目录中读取所有Java文件,并且对于每个Java文件,将其读入一个String,然后使用regexp删除构造函数......就像这样?

    Pattern p = Pattern.compile("class (\\w+) extends TestCase");
    Matcher m = p.matcher(javaSourceCode);

    String className = "";
    if (m.find()) {
        className = m.group(1);
    }

    String out =  javaSourceCode.replaceFirst("public "+className+"\\s*\\(String name\\)\\s*\\n*\\{[\\w\\W]*?\\}", "");

    System.out.println(out);

答案 1 :(得分:0)

模式受到严格限制,我会使用sedperl来执行此类任务。

但我还要考虑单独留下冗余构造函数。它们没有太大的危害,特别是如果它们都在单元测试中。