背景:
我想要的是,在签到之前打印出来自git diff列表中任何类的所有两度测试类(Kevin-Bacon-wise)的列表的能力。通过这种方式,我可以运行它们并减少来自Jenkins的愤怒电子邮件,当我错过的内容最终运行并出现错误时。
我能想到实现这一目标的最简单方法是使用Ruby脚本或类似代码自行编写代码,这样我就可以解释我们正在使用的一些模式,但要做到这一点,我需要能够查询“哪些类引用类X?”
我可以解析.java或(更简单).class文件来获取此信息,但我宁愿不:)有没有办法让Javac以简单的格式导出它,因为它编译?
答案 0 :(得分:3)
有没有办法让Javac在编译时以简单的格式导出它?
AFAIK,没有。
但是,还有其他方法可以获取依赖项列表:
(但请注意,您不太可能获得静态工具来提取Class.forName()
等产生的依赖关系。另请注意,由于“编译时间”的方式,您无法从字节码文件中推断出完整的依赖关系集。常量“被处理。”
我觉得这里有一些问题:
听起来像你的构建,实际上你的项目结构是单片的。如果你可以将代码库重组为单独构建的大型模块(根据它们的依赖关系),并且单独控制版本,那么你只需要进行完整的构建并在高位变化时运行所有单元测试。在其他一切依赖的模块中。 (我可以建议使用“Maven”这个词。它确实对大型代码库有帮助,11,000个类很大。)
听起来您可能会遇到经典VCS系统的“分支难”问题。
听起来你可能需要一个更强大的CI系统。如果您有更多内核并且构建框架是正确的,那么您应该能够获得更快的CI构建。 (如果你模块化以便重建更少......)
我认为以这种方式解决慢速构建/测试周期可能更容易,而不是通过额外(可能是定制的)工具来进行依赖性分析。
但我承认,做出这些决定可能不适合你。