php - 如何检查生产中不需要开发依赖项?
问题描述
由于我们的项目需要一个库来运行测试,所以这个包require-dev
在composer.json
.
{
//...
"require": {
"php": "^7.4|^8.0",
},
"require-dev": {
"cache/array-adapter": "^1.1"
},
//...
}
在手动代码审查期间,我意识到这个库也在我们的生产代码中使用。
修复很简单,我们将相应的包从require-dev
部分移动到require
部分。
{
//...
"require": {
"php": "^7.4|^8.0",
"cache/array-adapter": "^1.1"
},
"require-dev": {
},
//...
}
我正在寻找一种自动方式/测试来避免这种问题。我想我们在暂存期间的手动测试可以避免这类问题,但这还不够。
如何检查我们的核心代码中是否需要开发依赖项?
解决方案
您可以使用 PHPStan(或 Psalm,或任何其他静态分析器)来实现这一点:如果您删除了 dev 依赖项,然后运行这样的工具,它会通知您缺少此类依赖项中的类。
但请注意:即使这有助于编写更严格的代码,也可能需要在开始时进行一些工作才能在整个应用程序中实现正确的返回类型
另一个想法:同时删除开发依赖项并运行一个常用的测试套件,如 PHPUnit 或 Behat。
推荐阅读
- sql - BigQuery:如何在某些情况下使 MERGE 操作失败?
- python - 尝试实现超分辨率模型时出现内存不足错误
- excel - 运行时错误 13 我的代码中的类型不匹配?
- azure - 是否可以模块化逻辑应用 ARM 模板
- javascript - 如何在一个数组中循环json数据
- bash - 80 ff 之间的转义序列“\u”
- c++ - static_assert(false) 的实际解决方法;在 else constexpr{}
- kotlin - 使用燃料发布具有多个标头信息的请求
- java - BeanIO 的 XML 映射,列表未正确解释
- postgresql - 如何从 PostgreSQL 中的时间戳(0)中舍入毫秒值?