legoktm/semver-checker

一个用于验证库的API是否符合semver规范的实用工具

0.1.1 2018-01-02 02:26 UTC

This package is auto-updated.

Last update: 2024-09-04 16:58:30 UTC


README

semver-checker 是一个PHP实用工具,用于验证库的API是否符合semver规范。

原因

语义化版本控制听起来很棒,你自动获得最新和最好的上游代码版本,并且没有破坏性更改。但是,它实际上依赖于维护者来识别是否进行了任何破坏性更改,并相应地增加主版本号。

semver-checker 是自动验证库的新版本没有破坏性更改的尝试。它通过分析代码接口尽可能做到合理,但它不能替代适当的集成测试。库的作者也可能发现这很有用,因为它有助于识别是否进行了任何破坏性更改。

用法

$ ./bin/semver-checker check ~/projects/monolog 1.22.1 1.23.0
semver-checker
==============
Parsing old version...
 106 [============================] 16.0 MiB
Saved to cache.
Parsing newer version...
 106 [============================] 34.0 MiB
Saved to cache.
Comparing...
318/318 [============================] 100% 40.0 MiB
Deleted items
=============
* Monolog\Formatter\GelfMessageFormatter::MAX_LENGTH was deleted

Potential breaking changes found.

upgrade 命令找出库中可用的最高semver兼容版本,并测试任何更改

$ ./bin/semver-checker upgrade pimple/pimple 3.0.2
semver-checker
==============
Testing an upgrade from 3.0.2 to v3.2.2...
Parsing old version...
  16 [============================] 8.0 MiB
Parsing newer version...
  32 [============================] 8.0 MiB
Comparing...
80/80 [============================] 100% 8.0 MiB
No breaking changes were detected.

注意事项

重要的是要记住,并非所有破坏性更改都同等重要。上面提到的monolog示例似乎不太可能影响任何代码,尽管从技术上讲它是一个破坏性更改。

另一方面,有可能更改函数内部的代码,这可能导致破坏性更改,而这个工具将无法检测到。始终建议进行人工审查。

版权

semver-checker 版权所有 (C) 2017-2018 Kunal Mehta,根据GNU通用公共许可证版本3,或任何后续版本。有关详细信息,请参阅COPYING。