2.12. 向后兼容承诺

未匹配的标注

向后兼容承诺

在 PHPStan 中有多种方式保证向后兼容。这篇文章会提及用户在升级次要版本时可以期待什么,以及 PHPStan 如何支持 语义化版本

要从开发 PHPStan 扩展的角度了解向后兼容,点这里

在 PHPStan 的语境里,升级次要版本意味着在 1.0 版本之前的 0.x.y 增加 y, 以及在 1.0 版本之后的 x.y.z 增加 y。 升级一个补丁版本意味着增加 z

CLI 参数和选项

它们的含义 在次要/补丁版本不会更改。不会移除旧选项,可以添加新选项。

配置选项

现有 配置选项 的含义和文件格式在次要/补丁版本中不会更改。不会移除旧选项,可以添加新选项。

对分析代码执行的检查

分析代码执行规则的库,以及 规则级别 的含义在次要/补丁版本不会更改。这意味着 PHPStan 在次要/补丁版本不会出现新的错误种类。新规则仅被添加在主要版本,也作为前沿功能的一部分。前沿功能会在下个主要版本视情况加入。

类型推断能力

随着 bug 得到修复,PHPStan 会变得更聪明,并理解更多现有代码的信息。这会导致功能上不可避免的修改,并且停止报告老的错误,或者开始报告新的错误。

哪怕在一个次要/补丁版本,静态分析器的输出也可能发生变化,因为任何小的改变会导致代码有不同的理解,从而打破某些人的想法。

最小化类型推断变化的影响

当 PHPStan 停止报告假阳性时,它会报告不再存在的 忽略错误 。所以升级次要/补丁版本失败的情况中,有一半可以通过设置 reportUnmatchedIgnoredErrorsfalse 来解决。

用户通常欢迎 PHPStan 变得更聪明,因此在 composer.json 文件使用 脱字符版本范围(例如 "phpstan/phpstan": "^0.12.82")是被鼓励的。配合 提交到版本库的 composer.lock 你的构建不管怎样都会是稳定的,当你运行 composer update 时才会升级 PHPStan 的新版本。

如果你重视构建稳定性超过其他方面,并且没有提交 composer.lock 文件到版本库 ^oss,把 PHPStan 版本锁在一个指定的补丁版本: "phpstan/phpstan": "0.12.82" 并且用 Dependabot 或者类似的解决方案接收新版本的通知和自动升级。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~