以编程方式修改Java源代码中的注释

时间:2013-01-16 03:03:46

标签: java static-analysis

我正在寻找一种分析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,但似乎它只能分析代码但不能修改它。

我试图自己编写正则表达式来解决它,但这似乎是一个太大的项目。

有关此的任何建议吗?

1 个答案:

答案 0 :(得分:0)

这个的正则表达式应该非常简单

匹配以

开头的任何行
"^@FindBy"

或者,如果您担心奇怪(但有效)的语法(@FindBy(blah)protected void ..)

"^@FindBy(.*)"

也就是说,您也可以使用自己喜欢的IDE进行搜索并手动替换(Eclipse,IntelliJ,甚至emacs应该可以在所有文件中执行此操作),因为您似乎静态地执行此操作