我想要对一个给定的Java项目进行API演化度量,特别是新建/重命名类、新方法、新废弃方法等。是否有一种工具可以检测这些变化?
早在2007年,Google GSoc项目就已经开始了,但我找不到最终的工作成果。
我想要对一个给定的Java项目进行API演化度量,特别是新建/重命名类、新方法、新废弃方法等。是否有一种工具可以检测这些变化?
早在2007年,Google GSoc项目就已经开始了,但我找不到最终的工作成果。
Clirr是一个工具,用于检查Java库与旧版本的二进制和源代码的兼容性。基本上,您提供两组jar文件,Clirr会输出公共API更改列表。如果Clirr检测到不兼容的API更改,则可以配置Clirr Ant任务以中断构建。在持续集成过程中,Clirr可以自动防止意外引入二进制或源代码兼容性问题。
顺便提一下,GWT源代码中似乎有一个API检查器,不知道这是否是提到的GSoc项目的产物。
japi-compliance-checker -old LIB-0.jar -new LIB-1.jar
log4j的样本报告:http://abi-laboratory.pro/java/tracker/timeline/log4j/
你可以在特定库版本的报告中按严重程度级别找到所发现的兼容性问题分类:
JDiff可能也值得一提。
JDiff是一个Javadoc doclet,可以生成HTML报告,其中包含在比较两个API时已经删除、添加或更改的所有包、类、构造函数、方法和字段,包括它们的文档。这对于描述产品的两个版本之间发生了什么变化非常有用。仅比较每个版本的API(应用程序编程接口)。它不会比较执行源代码时所做的操作。
据我了解,它在旧版本的源文件夹上运行并生成一个xml文件。与新版本的源文件夹相同。然后比较两个xml输出,并编译更改列表。以HTML javadoc API风格呈现。