我想测量给定Java项目的API演变,特别是新的/重命名的类,新方法,新弃用的方法等。是否有工具可以检测到这些变化?
早在2007年,Google GSoc project已启动,但是,我无法找到最终的工作。
答案 0 :(得分:7)
我使用Clirr作为二进制兼容性检查程序。来自Clirr网站:
它是什么?
Clirr是一个检查Java的工具 二进制和源的库 与旧版本的兼容性。 基本上你给它两套jar files和Clirr转储出一个列表 公众api的变化。 Clirr Ant任务可以配置为中断 如果检测到不兼容的构建 api改变了。在一个连续的 整合过程Clirr可以 自动防止意外 引入二进制或源代码 兼容性问题。
...
功能
- 报告所有API更改(目前仅部分实施)
- 评估每项更改。二进制和源兼容性
- 支持纯文本和XML报告
- 灵活的故障处理(警告与错误,打破构建或设置 错误属性)
答案 1 :(得分:3)
还有一个名为Revapi
的新API演变检查工具答案 2 :(得分:2)
顺便说一下,gwt源代码中似乎有一个api-checker,不知道这是否是上述GSoc项目的产品。
答案 3 :(得分:1)
JDiff也许值得一提。
JDiff是一个Javadoc doclet 生成所有的HTML报告 包,类,构造函数, 已有的方法和领域 以任何方式删除,添加或更改, 包括他们的文件,何时 比较两个API。这是非常的 用于准确描述具有的内容 在两个版本之间改变了 产品。只有API(应用程序 编程接口)每个版本 比较。它没有比较什么 源代码在执行时执行。
据我所知,它运行在旧版本的源文件夹中并生成一个xml文件。新版本的源文件夹也是如此。比较两个xml输出并编译一个更改列表。在html-javadoc-api-style
中答案 4 :(得分:1)
您可能还想尝试japicmp。
答案 5 :(得分:1)
试用japi-compliance-checker工具。它是开源的。该工具显示API更改并检测两个jar存档之间的向后源(SC)和向后二进制(BC)兼容性问题:
japi-compliance-checker -old LIB-0.jar -new LIB-1.jar
log4j的示例报告:http://abi-laboratory.pro/java/tracker/timeline/log4j/
您可以在特定库版本的报告中按严重性级别找到发现的兼容性问题的分类: