扩展JDT实现自动代码注释与格式化 - 编程入门网
内容, 类内容(不包含类注释),项目的行分隔符。
类注释内容由 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() 方法返回文本中的相对结束位置。 使用 IBuffer 替换原代码的操作时,需确定处理内容的起始位置及长度。 IJavaElement 的 getSourceRange() 方法,可得到 Java 元素的区域范围,起 始位置 (getOffset() 方法 ) 及长度 (getLength() 方法 )。由于 IJavaElement 是其他 Java 模型元素的父类,因此,Java 模型的元素均可使用 getSourceRange() 方法得到元素的区域范围,并得到其元素内容的起始位置和 长度,在后续的实现中多次使用此方法确定处理元素内容的位置及长度。 在操作过程,对工作副本缓存的修改需要通知原资源,保证原文件与副本的 一致性,否则后续操作还是基于原文件进行,会覆盖之前所做的操作。 JavaModelUtil 的 reconcile() 方法将触发元素变化事件,保证文件的同步。 扩展JDT实现自动代码注释与格式化(5)时间:2010-11-20 IBM 孟潇 邵兵 王芹华重新添加引用包 由于在重新构建 Java 代码时,CodeGeneration 的 getCompilationUnitContent() 方法的实现中没有涉及引用包的处理。因此,需 要重新为 Java 代码添加引用包。 代码 清单 9得到引用包的列表,以字符串列表的类型返回。 清单 9. 得到引用包列表
代码 清单 10为 Java 代码重新添加引用包列表。由于代码重新构建且与原 文件同步后,就会完全丢失引用包的信息,需要在 清单 7执行之前获得引用包 列表。代码重新构建之后再使用 createImport() 方法为 Java 文件逐一重新添 加引用包,并及时与原文件同步。清单 10 中的省略号处的内容同清单 7。 清单 10. 重新添加引用包列表
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |