1

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

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

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

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

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

想到了以下方法,但发现很难实施。

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

我可以要求一个直接的解决方案,可以使用 eclipse AST 以一种很好和直观的方式完成这个吗?

PS:现有代码没有得到很好的维护。因此,可能性就像 interfaceA 可能没有使用实例变量声明,而只是在使用它之前用作局部变量等等。另外还有很多内部类等等。

提前致谢。

4

2 回答 2

1

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

几个工具/主题已经存在:

于 2012-10-13T08:34:14.580 回答
-1

对我来说,最简单的方法是在 Linux shell 中使用grepwc等工具来实现。GREP 会让你找到你喜欢的任何类型的模式(毕竟你有源代码,所以挖掘它应该没有任何问题),即'implements InterFaceA' 或'extends 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

现在,要将其与 ANT 连接起来,您只需创建一个将执行 bash 命令的 ANT 任务。你应该没有困难找到很多如何做到这一点的例子。

如果您不使用 Linux,则在 Windows 下可以使用等效工具。只需搜索网络,您就会发现与此类似的内容。

希望有帮助。

于 2011-11-27T20:16:55.587 回答