ondrejmirtes/backward-compatibility-check

Tool to compare two revisions of a public API to check for BC breaks

Maintainers

👁 ondrejmirtes

Package info

github.com/ondrejmirtes/BackwardCompatibilityCheck

pkg:composer/ondrejmirtes/backward-compatibility-check

Statistics

Installs: 8 532

Dependents: 0

Suggesters: 0

Stars: 2

7.3.0.1 2022-10-26 07:57 UTC

Requires

Suggests

None

Provides

None

Conflicts

Replaces

None

MIT 797ba65ab42c28247f6d85ac564c480977641819

  • James Titcumb <james.woop@asgrim.com>
  • Marco Pivetta <ocramius.woop@gmail.com>

This package is auto-updated.

Last update: 2026-06-17 20:58:03 UTC


README

👁 Mutation testing badge
👁 Latest Stable Version
👁 License

A tool that can be used to verify BC breaks between two versions of a PHP library.

This fork changes internal classes and methods interpretation according to PHPStan backward compatibility promise.

Pre-requisites/assumptions

  • Your project uses git
  • Your project uses composer.json to define its dependencies
  • All source paths are covered by an "autoload" section in composer.json
  • Changes need to be committed to git to be covered. You can implement your own logic to extract sources and dependencies from a project though.

Installation

composer require --dev ondrejmirtes/backward-compatibility-check

Usage

Adding to a continuous integration pipeline

The typical intended usage is to just add roave-backward-compatibility-check to your CI build:

vendor/bin/roave-backward-compatibility-check

This will automatically detect the last minor version tagged, and compare the API against the current HEAD. If any BC breaks are found, the tool returns a non-zero status, which on most CI systems will cause the build to fail.

NOTE: detecting the base version only works if you have git tags in the SemVer-compliant x.y.z format, such as 1.2.3.

NOTE: since this tool relies on tags, you need to make sure tags are fetched as part of your CI pipeline. For example in a GitHub action, note the use of fetch-depth: 0:

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"

Running manually

To generate additional documentation for changelogs:

vendor/bin/roave-backward-compatibility-check --format=markdown > results.md

GitHub Actions

When running in GitHub Actions, it is endorsed to use the --format=github-actions output format:

vendor/bin/roave-backward-compatibility-check --format=github-actions

Documentation

If you need further guidance:

vendor/bin/roave-backward-compatibility-check --help

Configuration

There are currently no configuration options available.