快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-23
修改注释内容,并 及时与原文件同步。

格式化代码

调用 Eclipse JDT 的格式化接口,通过操作工作副本缓存格式化代码。

保存 Java 源文件

将对工作副本缓存的修改保存到对应的 Java 源文件中。

下面详细讨论每个步骤。

遍历 Eclipse 工作空间获取 Java 编译单元

从体系结构看,JDT 分为模型和用户界面两部分。模型是 Java 语言规范中 Java 元素的抽象,比如:包、类、方法、字段等等。采用 JDT 提供的 Java 模 型操作代码,比直接由 Java 源文件中取得和操作代码的文本更加方便有效,而 且 Java 模型还可以感知其下的文件资源的变化。

Eclipse 工作空间的所有项目资源 (IProject) 可由 ResourcesPlugin 的静 态方法获取,得到工作空间的项目资源之后可以由 JavaCore 提供的静态方法创 建 Java 模型的根元素 IJavaProject(参见 清单 1)。通过得到 IJavaProject 接口的实例就可以遍历并得到 Java 的所有元素。

下面清单 1 至 4 给出遍历 Java 元素,获取 Java 编译单元的代码。

清单 1. 得到 Java 模型的 IJavaProject 元素

// 得到工作空间中的项目资源   IProject[] projects = ResourcesPlugin.getWorkspace().getRoot ().getProjects();   for (IProject project : projects) {   // 根据工作空间资源创建 Java 模型的顶层元素(Java 项目元素)       IJavaProject javaProject = JavaCore.create (project);       ……    }   }

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

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

清单 1给出得到 Java 模型的 IJavaProject 元素方法。由于 IJavaProject 元素是与资源相关的,即一个 IJavaProject 元素关联到一个 Eclipse 项目资 源,所以在操作之前需要通过 exits() 方法判断被关联的资源是否存在,以避 免发生异常(参见 清单 2)。

清单 2. 判断 Java 元素关联的资源是否存在

IJavaProject javaProject = …… ;   // 判断 Java 元素时候存在   if (javaProject.exists() && javaProject != null) { ……   }

包目录包括源代码文件夹目录,Jar 库以及一些附属包。对于 Java 项目而 言,可以通过调用 IJavaProject 类的 getPackageFragmentRoots() 方法得到 的 IPackageFragmentRoot 集合。在此集合中,第一个元素就是源代码文件夹目 录,因此可直接取其‘ 0 ’元素(参见 清单 3)。

清单 3. 得到源代码文件夹对应的 Java 元素

IJavaProject javaProject = …… ;   IPackageFragmentRoot root =  javaProject.getPackageFragmentRoots()[0];

清单 4是遍历源代码文件夹中的 Java 元素(IPackageFragmentRoot),得 到包(IPackageFragment)中的 Java 编译单元(ICompilationUnit)。

清单 4. 得到编译单元

IPackageFragmentRoot root = ……;    for (IJavaElement pack : root.getChildren()) {    if (pack instanceof IPackageFragment) {      for (ICompilationUnit cu : ((IPackageFragment)  pack).getCompilationUnits()) {     // 操作编译单元(ICompilationUnit)      }    }   }

得到 Java 编辑单元的工作副本缓存

Java 代码的可以通过操作工作副本进行修改。工作副本是代码进行修改时的 分阶段缓存区域,通过工作副本可以得到操作代码的缓存。修改代码可直接通过 操作工作副本的缓存来操作代码,但必须及时与原文件保持同步,避免后续操作 与之冲突。修改完毕,提交将修改保存在磁盘上。为避免资源浪费,提交之后丢 弃工作副本。

其原理类似于常用的 Java 编译器。在编译器中,

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