快速业务通道

扩展JDT实现自动代码注释与格式化 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
2010-11-20 IBM 孟潇 邵兵 王芹华

清单 13是得到方法模板注释的代码片段。根据不同类型的方法(IMethod) 参数,读取不同的模板,并均以字符串类型返回。若是构造方法,读取 Comment >> Constructors中的模板;若是重载方法,读取 Overriding methods中 的模板;若是其他方法,读取 Methods中的模板。if 语句判断方法参数是否为 构造函数,由于构造函数不能被重载,因此不需要在其父类中递归查找。

清单 14. 得到字段注释模板内容

public String getFiledComment(IField field, String  lineDelimiter)    throws IllegalArgumentException, CoreException {   String typeName = Signature.toString(field.getTypeSignature ());   String fieldName = field.getElementName();   return CodeGeneration.getFieldComment(field.getCompilationUnit (),     typeName, fieldName, lineDelimiter);   }

清单 14是得到 Comment >> Fields模板的 Javadoc 字符串。通过 IField 获得字段名及字段类型,扩展 JDT 的方法。

格式化代码

代码修改后,为保证统一的排版格式,需进行代码格式化,清单 15介绍 Java 代码格式化排版的具体实现。

清单 15. 格式化排版

ICompilationUnit copyCU = ...;   IBuffer buffer = ...;   IType type = ...;   // 类体的范围   ISourceRange sourceRange = type.getSourceRange();   // 获得源代码的类体内容   String originalContent = buffer.getText(sourceRange.getOffset (),   sourceRange.getLength());   // 代码进行格式化   String formattedContent = CodeFormatterUtil.format(   CodeFormatter.K_CLASS_BODY_DECLARATIONS, originalContent,0,   lineDelimiter, copyCU.getJavaProject());   // 去除 tab 制表符和空格符   formattedContent = Strings.trimLeadingTabsAndSpaces (formattedContent);   // 替换原文件   buffer.replace(sourceRange.getOffset(), sourceRange.getLength (),   formattedContent);

代码格式化仍是针对缓存的操作,调用 JDT 提供格式化接口 format() 方法 进行缓存格式化,最终反映到 Java 代码上。format() 方法的第一个参数表示 格式化的类型,第三个参数是代表缩进级别的整数类型,小于等于 0 的值代表 没有缩进,一级别代表一个 TAB 制表符的缩进度。

保存 Java 源文件

修改完毕,需要将代码的变化提交才能保存到磁盘上。为了资源浪费,提交 之后,丢弃副本。清单 16是提交并丢弃副本的操作。

清单 16. 保存文件

IProgressMonitor monitor = ...;   ICompilationUnit copyCU = ...;   // 保存   copyCU.commitWo***ngCopy(true, monitor);   if (copyCU != null)   // 丢弃副本   copyCU.discardWo***ngCopy();

总之,针对单个编译单元的修改的步骤是将工作单元转化为工作副本,得到 工作副本缓存;修改缓存并定时与原文件同步;提交变化、丢弃副本来保存文件 。

结束语

本文介绍了一个为 Eclipse 工作空间中的 Java 代码自动添加统一注释并格 式化排版的工具及其具体实现。根据 Eclipse Code Template 的配置,通过扩 展 Eclipse Java Development Tool(JDT)API,来实现 Java 代码与注释的自 动格式化功能。通过本文,希望开发人员能够更好地了解和应用 JDT 相关知识 ;通过扩展与配置 Eclipse 功能,让 Eclipse 成为开发人员更加得心应手的可 配置开发平台。

原文地址:http://www.ibm.com/developerworks/cn/opensource/os-cn- ecl-cf/

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号