扩展 JDT 实现自动代码注释与格式化
2010-07-30 00:00:00 来源:WEB开发网清单 7重新构建 Java 代码的步骤是调用 CodeGeneration 的 getCompilationUnitContent() 方法得到新 Java 代码的内容,将其替换工作副本缓存(IBuffer)中的 Java 代码,再调用 reconcile() 方法将修改与工作副本同步。
getCompilationUnitContent() 方法主要功能是读取 Code >> New Java File模板,根据文件内容替换其中的表达式,返回一个具有格式(包含换行符、空格)的字符串。该方法有 4 个参数,分别为编译单元,类注释内容,类内容(不包含类注释),项目的行分隔符。
类注释内容由 CodeGeneration 的 getTypeComment() 方法得到,该方法读取 Comment >> Types模板并以字符串的类型返回。其中,getTypeComment() 方法的第二个参数是类标识符名称,如文件 A.java 的类标识符名称就是 A。类标识符名称由 IType 的 getElementName() 方法得到。
标志换行的行分隔符可由 StubUtility 的 getLineDelimiterUsed() 方法得到(参见 清单 8),获取类注释、方法注释、字段注释模板内容的方法也同样需要此参数。
清单 8 得到项目行分隔符
String lineDelimiter = StubUtility.getLineDelimiterUsed(javaProject);
其中,类内容参数的处理最为复杂。使用 IType 的 getSource() 方法得到的字符串不仅包含类声明体的内容,而且包括类的 Javadoc 注释。而传递给 getCompilationUnitContent() 方法的类内容参数中,不应包括类注释。因此,当类存在 javadoc 注释时,需要将其去除。本文使用 String 的 substring() 方法,在 getSource() 得到的字符串中截取类内容。类声明体内容的开始位置即 javadoc 内容的结束位置,由于 Itype 的 getJavadocRange() 方法得到类体最后的一个 javadoc 注释区域范围,这个范围相对整个 Java 文件的结束位置减去 IType 在 Java 文件中的绝对开始位置就得到此 JavaDoc 在 IType 类 getSource() 方法返回文本中的相对结束位置。
更多精彩
赞助商链接