以编程方式在工作区中查找接口的引用

时间:2011-11-27 18:46:53

标签: java eclipse parsing abstract-syntax-tree javacc

只是想知道哪种工具/方法可以轻松/轻松地解决以下问题?需要通过ANT脚本调用。

eclipse工作区有几个项目,比如projectA - projectO(数量为15)。其中大多数是Java项目。这里我需要收集一些数据,而不是使用eclipse IDE,而是通过编程方式。

在projectA中,这是一个java项目,有一个接口,比如InterFaceA,它正在各种其他项目中实现。

关键是我需要列出已实施InterfaceA的所有15个项目中的所有类。

我遇到了几个工具,比如扩展Javadoc,eclipse AST,javaCC,ANTLR,但没有找到现成的解决方案。

考虑下面的方法,但发现很难实现。

  • 找出声明的所有变量,字段,方法级别,即整个java文件/类,找出它们的类型,然后找出实现InterfaceA的类。
  • 像eclipse这样的东西在interfaceA的整个工作区找到引用,但通过代码?如果我得到eclipse如此快速地做到这一点,我将不胜感激。

我是否可以请求直接解决方案,可能正在使用eclipse AST以一种不错的直观方式完成这项工作?

P.S。:现有代码没有得到整齐维护。因此,可能性就像interfaceA可能没有用实例变量声明,但只是在它被使用之前用作局部变量,依此类推。       此外还有许多内部类等。

提前致谢。

2 个答案:

答案 0 :(得分:1)

一般来说,这是依赖性分析/管理的问题。

已存在多个工具/主题:

答案 1 :(得分:-1)

对我来说,最简单的方法是使用 grep wc 等工具在Linux shell中执行此操作。 GREP会让你找到你喜欢的任何模式(毕竟你有源代码,所以挖掘它应该没有任何问题),即'实现InterFaceA'或'扩展SomeClassB'。 感谢WC,您可以计算模式的出现次数。结合这两者将为您提供巨大的可能性。

例如:

  1. 搜索所有实现Serializable接口的类:grep -iR 'implements Serializable' *
  2. 计算实现Serializable接口的所有类:grep -iR 'implements Serializable' * | wc -l
  3. 与#2相同,但跳过.svn子目录中的所有文件:grep -iR 'implements Serializable' * | grep -v .svn | wc -l
  4. 现在,要使用ANT连接它,您只需创建一个执行bash命令的ANT任务即可。你应该没有困难找到很多如何做到这一点的例子。

    如果您不使用Linux,Windows下可以使用等效的工具。只需搜索网页,您就会发现类似于this的内容。

    希望有所帮助。