legoktm / semver-checker
一个用于验证库的API是否符合semver规范的实用工具
0.1.1
2018-01-02 02:26 UTC
Requires
- php: >=5.5.9
- composer/semver: ^1.4.2
- dnoegel/php-xdg-base-dir: ^0.1
- nikic/php-parser: ^3.1.3
- rmccue/requests: ^1.7
- symfony/console: ^3.4.2
- symfony/process: ^3.4.2
Requires (Dev)
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。