我正在尝试为我的项目进行结构替换.我有一个包含100个类的包,每个包含1-20个字段.我们的项目正在迁移到匈牙利表示法,这意味着所有私有字段都必须以m为前缀.
我知道IntelliJ可以为新字段添加前缀,但我不知道为所有字段进行批量重构 – >重命名的配方.
正则表达式不起作用,因为所有字段都是通过应用程序在所有类型的上下文,方法调用,赋值,算术运算中使用的……
什么是最好的方法不是手动的?
解决方法
根据类似问题的答案(
here,here和
here)我想你可以使用 javaparser并创建一个小实用程序来为你做重构.
here)我想你可以使用 javaparser并创建一个小实用程序来为你做重构.
这是让你入门的东西:
import japa.parser.JavaParser; import japa.parser.ParseException; import japa.parser.ast.CompilationUnit; import japa.parser.ast.body.FieldDeclaration; import japa.parser.ast.body.VariableDeclaratorId; import java.io.File; import java.io.FileWriter; import java.io.IOException; public class HungarianNotationRefactor { public static void main(String[] args) throws IOException,ParseException { File file = new File(args[0]); CompilationUnit cu; cu = JavaParser.parse(file); // get all types in file cu.getTypes() .stream() // get all members .flatMap(type -> type.getMembers().stream()) // filter only fields .filter(member -> member instanceof FieldDeclaration) .map(member -> (FieldDeclaration) member) // get all variables and rename .flatMap(field -> field.getVariables().stream()) .forEach(var -> var.setId(new VariableDeclaratorId("m_" + var.getId()))); try (FileWriter out = new FileWriter(file)) { out.append(cu.toString()); } System.out.println(cu.toString()); } }