【发布时间】:2013-01-16 03:03:46
【问题描述】:
我正在寻找一种方法来分析 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,但似乎只能分析代码而不能修改它。
我尝试自己编写正则表达式来解决它,但这似乎是一个太大的项目。
对此有什么建议吗?
【问题讨论】:
-
如果确实如您所说,如果 cmets 或字符串中不存在 @Findby 序列,则正则表达式可以做得很好。转换真的是上下文无关的吗?
-
也许我需要关心的唯一上下文是 @FindBy 注释必须放在 WebElement 或它们的集合之前,例如 List
-
为什么不直接使用您选择的编辑器的搜索和替换?
标签: java static-analysis