检测api更改/演变

ghhkc1vu  于 2021-07-05  发布在  Java
关注(0)|答案(6)|浏览(329)

**结束。**此问题不符合堆栈溢出准则。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

两年前关门了。
改进这个问题
我想测量给定java项目的api演变,特别是新的/重命名的类、新方法、新的不推荐的方法等。有没有检测这种变化的工具?
早在2007年,googlegsoc项目就启动了,但是我找不到最终的工作。

jum4pzuy

jum4pzuy1#

jdiff或许也值得一提。
jdiff是一个javadoc doclet,当比较两个api时,它生成一个html报告,其中包含所有以任何方式删除、添加或更改的包、类、构造函数、方法和字段,包括它们的文档。这对于准确描述一个产品的两个版本之间的变化非常有用。只比较每个版本的api(应用程序编程接口)。它不比较源代码在执行时所做的事情。
据我所知,它在旧版本的sourcefolder上运行,并生成一个xml文件。新版本的sourcefolder也是如此。然后比较两个xml输出并编译变更列表。以html javadoc api样式

daolsyd0

daolsyd02#

试试japi合规性检查工具。它是开源的。该工具显示api更改,并检测两个jar存档之间的向后源(sc)和向后二进制(bc)兼容性问题:

japi-compliance-checker -old LIB-0.jar -new LIB-1.jar

log4j的示例报告:http://abi-laboratory.pro/java/tracker/timeline/log4j/

您可以在特定库版本的报告中找到按严重性级别对发现的兼容性问题的分类:

uoifb46i

uoifb46i3#

还有一个新的api进化检查工具revapi

j2datikz

j2datikz4#

我会使用clirr,一个二进制兼容性检查器。从clirr网站:

这是什么?

clirr是一个检查java库与旧版本的二进制和源代码兼容性的工具。基本上,给它两组jar文件,clirr转储公共api中的更改列表。clirr ant任务可以配置为在检测到不兼容的api更改时中断生成。在连续集成过程中,clirr可以自动防止意外引入二进制或源代码兼容性问题。
...

特点

报告所有api更改(目前仅部分实现)
评估每项变更。二进制和源代码兼容性
支持纯文本和xml报告
灵活的故障处理(警告与错误、中断生成或设置错误属性)

hgc7kmma

hgc7kmma5#

你也可以试试japicmp。

ao218c7q

ao218c7q6#

顺便说一句,在gwt源代码中似乎有一个api检查器,不知道这是否是所提到的gsoc项目的产品。
gwtjavaapicompatibilitychecker也用于build.xml中

相关问题