作为代码清理的一部分,并迁移到新的测试框架,我需要从所有测试类(几乎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本身自动执行此操作?
答案 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)
模式受到严格限制,我会使用sed
或perl
来执行此类任务。
但我还要考虑单独留下冗余构造函数。它们没有太大的危害,特别是如果它们都在单元测试中。