快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
Java 代码一旦打开,就会 产生一个工作副本,用户保存代码之前的所有操作均是对工作副本的操作。只有 进行关闭编辑器或保存代码等提交代码操作时,才会将文件保存到磁盘上。

本文中工具的实现是通过直接操作 Java 文件工作副本的缓存来修改 Java 文件的。首先,要根据编译单元获得工作副本,即将编译单元切换到工作副本模 式(参见 清单 5)。

清单 5. 得到编译单元的工作副本

parentCU.becomeWorkingCopy(new SubProgressMonitor(monitor,  1));

清单 5 中将编译单元切换到工作副本模式,就是在内存中创建一块存放 Java 代码副本的地方,即工作副本缓存。

工作副本模式下,工作副本可以得到工作副本缓存,一个 IBuffer 的实例。 该实例类似于 StringBuffer 的 API,对其修改就可以达到修改与之关联的 Java 元素的效果。在提交代码之前,对缓存修改一直保存在工作副本中,直至 被显示提交(参见 清单 6)。

清单 6. 得到工作副本缓存

// 得到工作副本缓存   IBuffer buffer = parentCU.getBuffer();

修改代码

Eclipse 中 Java 代码包含的注释种类及顺序是由 Code >> New Java File模板决定,注释的具体内容由 Comments下相应的模板决定。为使工作空间 内的代码具有一致的注释风格,首先应按照代码构建模板的形式重新构建代码, 处理是否含有文件注释、类注释或其他的信息;接着,处理重新构建代码时丢失 的重要信息,如引用包;然后,处理重新构建代码时未处理的类体内部代码注释 ,如方法注释和字段注释;最后,将重新构建后的代码格式化。这样,Java 代 码就具有了规范的注释及良好的风格。

扩展JDT实现自动代码注释与格式化(4)

时间:2010-11-20 IBM 孟潇 邵兵 王芹华

重新构建 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);

清单 7重新构建 Java 代码的步骤是调用 CodeGeneration 的 getCompilationUnitContent() 方法得到新 Java 代码的内容,将其替换工作副 本缓存(IBuffer)中的 Java 代码,再调用 reconcile() 方法将修改与工作副 本同步。

getCompilationUnitContent() 方法主要功能是读取 Code >> New Java File模板,根据文件内容替换其中的表达式,返回一个具有格式(包含换 行符、空格)的字符串。该方法有 4 个参数,分别为编译单元,类注释

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号