Java预处理器 - 将代码插入到每个函数中

时间:2012-10-17 18:32:55

标签: java preprocessor aspectj

我正在寻找一个实用程序,它允许我将大量.java文件(我不允许修改)作为输入,并输出使用这些更改修改的相同文件:

  1. 将导入语句添加到文件顶部
  2. 在与某个正则表达式匹配的每个函数中(即* com.foo.*.draw*(*))...
    1. 在函数开头插入Func.begin([function name]),其中[function name]是完全限定的函数名称(void com.foo.circle.drawLine(int,int)
    2. 在功能底部插入Func.end([function name])
  3. 但是,我不想将AspectJ用于此任务,因为它适用于.class文件,并且可能会减慢速度。

    有什么想法吗?

2 个答案:

答案 0 :(得分:2)

尝试我的Java Comment预处理器,它具有形成前缀和后缀部分的特殊功能(我将它用于导入部分) http://code.google.com/p/java-comment-preprocessor/

答案 1 :(得分:1)

我可能会使用Gradle。您不需要让任何项目进行gradle项目,但可以定义用户定义的任务来完成工作。为了替换现有文件(保留这些文件),我发现ant任务支持比gradle“Copy”任务更容易使用。如果你需要保持原始文件不变,你应该使用它!

您可以使用replace来插入“import”:

task addImportStatement << {
    ant.replace(dir: 'yourSrcDirHere', token: 'existing value', value:'<![CDATA[existing value
    new import statement here]]>')
}

task regExpressionSub << {
    ant.replaceRegExp(...)
}
regExpressionSub.dependsOn addImportStatement

蚂蚁任务的详细信息是available in the online ant manual