Автоматизация удаления строк кода из файла .java, скрипта - PullRequest
0 голосов
/ 11 ноября 2010

В рамках очистки кода и перехода на новую тестовую среду мне нужно удалить конструктор с аргументом 'String name' из всех тестовых классов (почти 1000+ * .java-файлов). Например, часть, указанную в комментарии, должна быть удалена.

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

}

Есть ли способ автоматизировать это, используя ant-скрипт или сам java?

Ответы [ 2 ]

3 голосов
/ 11 ноября 2010

Я предполагал, что вы можете прочитать все файлы Java из каталога, и для каждого файла Java прочитать его в строку, а затем использовать 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);
0 голосов
/ 11 ноября 2010

Если шаблон сильно ограничен, я бы использовал sed или perl для такой задачи.

Но я бы также подумал о том, чтобы просто оставить избыточные конструкторы в покое. Они не приносят большого вреда, особенно если они все в модульных тестах.

...