Roave/BackwardCompatibilityCheck
GitHub: Roave/BackwardCompatibilityCheck
一个用于对比 PHP 类 API 变更、检测向后兼容性破坏的自动化工具。
Stars: 595 | Forks: 66
# Roave 向后兼容性检查
[](https://github.com/vshymanskyy/StandWithUkraine/blob/main/docs/README.md)
[](https://dashboard.stryker-mutator.io/reports/github.com/Roave/BackwardCompatibilityCheck/7.1.x)
[](https://shepherd.dev/github/Roave/BackwardCompatibilityCheck)
[](https://packagist.org/packages/roave/backward-compatibility-check)
[](https://packagist.org/packages/roave/backward-compatibility-check)
用于验证 PHP 库的两个版本之间的 BC 破坏。
## 先决条件/假设
* 你的项目使用 `git`
* 你的项目使用 `composer.json` 来定义其依赖项
* 所有源代码路径都由 `composer.json` 中的 `"autoload"` 部分覆盖
* 更改需要提交到 `git` 才能被覆盖。你可以实现自己的逻辑来从项目提取源代码和依赖项。
## 安装
```
composer require --dev roave/backward-compatibility-check
```
### 使用 Docker 安装
你也可以使用 Docker 来运行 `roave-backward-compatibility-check`:
```
docker run --rm -v `pwd`:/app nyholm/roave-bc-check
```
## 用法
### 添加到持续集成流水线
典型用法是将 `roave-backward-compatibility-check`
添加到你的 CI 构建中:
```
vendor/bin/roave-backward-compatibility-check
```
这将自动检测最后一个标记的次要版本,并将 API 与当前的 `HEAD` 进行比较。如果发现任何 BC 破坏,
工具将返回非零状态,这将在大多数 CI 系统上导致构建失败。
*注意:* 仅当你在 SemVer 格式的 `x.y.z` 中有 git 标签时,检测基础版本才有效,例如 `1.2.3`。
*注意:* 由于此工具依赖标签,你需要确保在 CI 流水线中获取标签。例如在 GitHub Actions 中,请注意使用
[`fetch-depth: 0`](https://github.com/actions/checkout#fetch-all-history-for-all-tags-and-branches):
```
jobs:
roave-backwards-compatibility-check:
name: Roave Backwards Compatibility Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: "Install PHP"
uses: shivammathur/setup-php@v2
with:
php-version: "8.0"
- name: "Install dependencies"
run: "composer install"
- name: "Check for BC breaks"
run: "vendor/bin/roave-backward-compatibility-check"
```
#### Nyholm GitHub Action
Tobias Nyholm 还提供了 [一个简单的 GitHub Action](https://github.com/Nyholm/roave-bc-check-docker)
你可以在你的 Github 流水线中使用它。我们推荐大多数情况使用它,因为它设置简单:
`.github/workflows/main.yml`:
```
on: [push]
name: Test
jobs:
roave-backwards-compatibility-check:
name: Roave Backwards Compatibility Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0
- name: "Check for BC breaks"
uses: docker://nyholm/roave-bc-check-ga
```
### 手动运行
要为 changelog 生成额外文档:
```
vendor/bin/roave-backward-compatibility-check --format=markdown > results.md
```
### GitHub Actions
在 GitHub Actions 中运行时,建议使用 `--format=github-actions` 输出格式:
```
vendor/bin/roave-backward-compatibility-check --format=github-actions
```
### 文档
如果需要进一步指导:
```
vendor/bin/roave-backward-compatibility-check --help
```
## 配置
文件 `.roave-backward-compatibility-check.xml` 会从当前工作目录读取(如果存在)并设置命令的配置。
它应该是一个遵循我们 [schema](Resources/schema.xsd) 的 XML 文件:
**示例:**
```
#\[BC\] CHANGED: The parameter \$a of TestArtifact\\TheClass\#method\(\)#
#\[BC\] CHANGED: The parameter \$b of TestArtifact\\TheClass\#method2\(\)#
```
标签:API 变更, BC 断裂, CI 集成, Composer, Docker, ffuf, Git, OpenVAS, PHP, Shepherd, Stryker, 二进制发布, 云安全监控, 依赖管理, 兼容性检查, 发布管理, 向后兼容, 安全防御评估, 库维护, 开源工具, 开源框架, 持续集成, 版本对比, 突变测试, 网络安全研究, 覆盖率, 请求拦截, 静态分析