我正在寻找一种分析Java代码并以编程方式修改它们的方法,
例如,代码可能是这样的:
@FindBy(id = "login")
WebElement btnLogin;
@FindBy(xpath = "//div/a")
List<WebElement> aNodes;
我希望检查@FindBy注释的每个字段,并将注释@FindBy更改为@Synchronized。
即:
@Synchronized
WebElement btnLogin;
@Synchronized
List<WebElement> aNodes;
与我发现的类似问题(他们使用javassist或ASM修改字节码)不同,这些注释将在运行时删除,因此我只能在源代码级别执行,但不能在字节码级别执行。
到目前为止,我找到qdox,但似乎它只能分析代码但不能修改它。
我试图自己编写正则表达式来解决它,但这似乎是一个太大的项目。
有关此的任何建议吗?
答案 0 :(得分:0)
这个的正则表达式应该非常简单
匹配以
开头的任何行"^@FindBy"
或者,如果您担心奇怪(但有效)的语法(@FindBy(blah)protected void ..)
"^@FindBy(.*)"
也就是说,您也可以使用自己喜欢的IDE进行搜索并手动替换(Eclipse,IntelliJ,甚至emacs应该可以在所有文件中执行此操作),因为您似乎静态地执行此操作