【问题标题】:Automating deleting lines of code from .java file, script自动从 .java 文件、脚本中删除代码行
【发布时间】:2011-05-08 08:34:58
【问题描述】:

作为代码清理和迁移到新测试框架的一部分,我需要从所有测试类(几乎 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 本身自动执行此操作?

【问题讨论】:

  • 很奇怪的要求 :) 我认为以前没有人有这样的东西
  • @org.life.java 很有意思的需求,我觉得。

标签: java scripting ant


【解决方案1】:

如果模式受到严格限制,我会使用 sedperl 来完成这样的任务。

但我也会考虑只留下多余的构造函数。它们不会造成太大的伤害,尤其是当它们都在单元测试中时。

【讨论】:

  • 不幸的是我不知道 sed 或 perl。另外,我的客户是一个完美主义者。所以离开构造函数是不可能的。
【解决方案2】:

我想你可以从一个目录中读取所有的 Java 文件,并且对于每个 Java 文件,将它读入一个字符串,然后使用正则表达式来删除构造函数......像这样?

    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);

【讨论】:

  • 难以保持源代码格式与以前相同。还是觉得有用。
猜你喜欢
  • 1970-01-01
  • 2011-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-14
  • 2017-01-22
  • 2011-07-12
  • 2018-09-08
相关资源
最近更新 更多