在不更改版本的情况下检测不兼容的 API 更改
Posted
技术标签:
【中文标题】在不更改版本的情况下检测不兼容的 API 更改【英文标题】:Detect an incompatible API change without version change 【发布时间】:2015-04-11 20:48:26 【问题描述】:我在 Java - Maven - Jenkins
项目上使用语义版本控制,因此,每当完成不兼容的 API 更改时,都应该更改产品的主要版本。
我正在寻找一种自动化的方式来检测这种变化,这样如果发生这种变化,maven 构建就会失败(或者甚至自动增加版本)。谷歌搜索让我正在编写自己的maven enforcer plugin
规则,但我想问是否有人知道任何可以提供帮助的工具(Jenkins
插件或类似的也可以)。
【问题讨论】:
我建议看看animal-sniffer-plugin ? 我已经这样做了,但它并没有达到我想要的效果。它检查您的代码是否针对较旧/较新的依赖项 API 进行编译 还有 clirr 插件:mojo.codehaus.org/clirr-maven-plugin 做类似的事情。 这正是我想要的,谢谢!您可以将其发布为答案吗? 【参考方案1】:一年过去了,但我希望这可以帮助将来的人。 根据wemu 的评论,我发现了这个:
Clirr
命令行:http://clirr.sourceforge.net/ Maven 插件:http://www.mojohaus.org/clirr-maven-plugin/ SonarQube 插件:http://docs.sonarqube.org/display/PLUG/Clirr+PluginJava API 合规性检查器
命令行:https://github.com/lvc/japi-compliance-checkerRevapi(支持 Java 8)
首页:http://revapi.org Maven 插件:https://github.com/revapi/revapi 附加信息:http://massol.myxwiki.org/xwiki/bin/view/Blog/ByeByeCLIRRWelcomeRevapijapicmp(支持 Java 8)
命令行/Maven 插件:http://siom79.github.io/japicmp/【讨论】:
Revapi 似乎是这些中更好的选择。以上是关于在不更改版本的情况下检测不兼容的 API 更改的主要内容,如果未能解决你的问题,请参考以下文章
如何在不破坏向后兼容性的情况下更改 DataContract 属性的类型?
在不使用委托方法的情况下检测 UITextView 和/或 UITextField 上的 SELECTION 更改