繁体   English   中英

验证Java类之间方法协定的一致性

[英]Verify consistency of method contracts between classes of java

我们公司中有一个庞大的应用程序,它是用其源代码(实际上几乎是所有源代码)购买的,并且我们一直在努力使其适应我们的需求,修复等。很久以前,有人认为这将是编译项目的一个好方法是拥有原始公司的预编译jar,然后仅在从Override文件夹中编辑或添加我们需要的类,而Override文件夹是从带有原始源代码的一些zip文件中获得的。 因此,当我们编译时,我们仅编译我们已编辑的类,在Classpath中使用原始的jar,然后将新的或已编辑的类与原始jar一起创建一个新的Jar。

问题似乎是人们正在更改方法协定,编辑接口并向抽象类添加抽象方法。 编译时,我们不会重新编译完整的源代码,而不会重新编译完整的源代码,因此编译器仅检查覆盖的源代码的合同一致性。 我已经开始注意到事情似乎正在崩溃,因为旧的类正在尝试调用不再存在的方法,或者类调用的类的方法实际上实现了接口的部分版本。

我不能简单地将原始源代码与我们覆盖的源代码连接在一起,因为某些类和Java文件是在生成时自动生成的,因此我可能会意外修复某些确实没有损坏的东西。 (我尝试过,这就是为什么我知道)

有没有一种方法可以自动验证各种已编译jar的类之间的合同一致性? 解决这些隐患之后,我将能够将两个源目录合并在一起,并在将来避免此问题。

为什么不编译所有内容? (您确实有源代码)这样​​,您至少会得到编译错误。

我假设您没有任何测试可以验证一切是否正常。 也许您也应该开始写那些。 一个不错的起点是测试之前已被破坏的新代码。 这样,您就可以集中精力测试变化中的零件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM