为了自动化遗留项目中的某些手动任务,我需要从 java 或 groovy 代码中修改现有的 java 文件。
我不想使用 RegEx,因为在我看来它既不快速也不干净。
我找到了 javassist 和 srcgen4javassist。第一个允许我根据需要修改源代码,但只写入字节码,丢失所有注释和注释。而对于第二个,我没有设法读取不是用 srcgen4javassist 本身创建的现有类。
有没有优雅的解决方案,还是我需要硬着头皮使用正则表达式?
您可以真正使用 eclipse 的ASTParser之类的东西来解析代码,此时您可以找到替换目标 xpath 样式,但需要做很多工作。
您还可以考虑使用注释标记替换区域并编写注释处理器以在运行时生成/更改源,但是(至少在我看来)API 很麻烦。
您可以将正则表达式与源代码中的某些标记结合起来,例如
//START REPLACEMENT-TARGET
...code to be edited/replaced
//END REPLACEMENT TARGET
这将使您的正则表达式定位更安全。