扩展 JDT 实现自动代码注释与格式化
2010-07-30 00:00:00 来源:WEB开发网清单 6. 得到工作副本缓存
// 得到工作副本缓存
IBuffer buffer = parentCU.getBuffer();
修改代码
Eclipse 中 Java 代码包含的注释种类及顺序是由 Code >> New Java File模板决定,注释的具体内容由 Comments下相应的模板决定。为使工作空间内的代码具有一致的注释风格,首先应按照代码构建模板的形式重新构建代码,处理是否含有文件注释、类注释或其他的信息;接着,处理重新构建代码时丢失的重要信息,如引用包;然后,处理重新构建代码时未处理的类体内部代码注释,如方法注释和字段注释;最后,将重新构建后的代码格式化。这样,Java 代码就具有了规范的注释及良好的风格。
重新构建 Java 代码
CodeGeneration(org.eclipse.jdt.ui)提供了获取 Code Templates首选项页面的各类模板信息的重载静态方法,并以字符串的形式返回,如文件注释、类注释、方法注释、字段注释、新 Java 文件等。开发人员可扩展其方法得到不同的模板信息。
在重新构建 Java 文件时,按照模板格式重新生成代码,并替换原有代码,最后与原文件进行同步(参见 清单 7)。
清单 7. 重新构建 Java 代码
// 得到 Java 代码中的类
IType type = parentCU.getTypes()[0];
// 得到类的内容
String typeContent = type.getSource();
// 如果类含有 Javadoc,取类内容的子串,去除注释内容
if (type.getJavadocRange() != null)
typeContent = typeContent.substring(type.getJavadocRange().getOffset()
+ type.getJavadocRange().getLength() - type.getSourceRange().getOffset());
// 调用 CodeGeneration 的获得新 Java 文件的方法,重新构建代码
String content = CodeGeneration.getCompilationUnitContent(parentCU,
CodeGeneration.getTypeComment(parentCU, type.getElementName(),
lineDelimiter), typeContent, lineDelimiter);
// 用新得到的 Java 代码替换原有代码
buffer.replace(0, parentCU.getSourceRange().getLength(), content);
// 同步
JavaModelUtil.reconcile(parentCU);
更多精彩
赞助商链接