项目作者: Roave

项目描述 :
:ab: Tool to compare two revisions of a class API to check for BC breaks
高级语言: PHP
项目地址: git://github.com/Roave/BackwardCompatibilityCheck.git
创建时间: 2017-10-27T12:40:27Z
项目社区:https://github.com/Roave/BackwardCompatibilityCheck

开源协议:MIT License

下载


Roave Backward Compatibility Check

SWUbanner

Mutation testing badge
Type Coverage
Latest Stable Version
License

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

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

  1. composer require --dev roave/backward-compatibility-check

Install with Docker

You can also use Docker to run roave-backward-compatibility-check:

  1. docker run --rm -v `pwd`:/app nyholm/roave-bc-check

Usage

Adding to a continuous integration pipeline

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

  1. 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:

  1. jobs:
  2. roave-backwards-compatibility-check:
  3. name: Roave Backwards Compatibility Check
  4. runs-on: ubuntu-latest
  5. steps:
  6. - uses: actions/checkout@v2
  7. with:
  8. fetch-depth: 0
  9. - name: "Install PHP"
  10. uses: shivammathur/setup-php@v2
  11. with:
  12. php-version: "8.0"
  13. - name: "Install dependencies"
  14. run: "composer install"
  15. - name: "Check for BC breaks"
  16. run: "vendor/bin/roave-backward-compatibility-check"

Nyholm Github Action

Tobias Nyholm also offers a simple GitHub action
that you can use in your Github pipeline. We recommend this for most cases as
it is simple to set up:

.github/workflows/main.yml:

  1. on: [push]
  2. name: Test
  3. jobs:
  4. roave-backwards-compatibility-check:
  5. name: Roave Backwards Compatibility Check
  6. runs-on: ubuntu-latest
  7. steps:
  8. - uses: actions/checkout@v2
  9. with:
  10. fetch-depth: 0
  11. - name: "Check for BC breaks"
  12. uses: docker://nyholm/roave-bc-check-ga

Running manually

To generate additional documentation for changelogs:

  1. 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:

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

Documentation

If you need further guidance:

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

Configuration

The file .roave-backward-compatibility-check.xml is read from the current working directory (when it exists) and sets configuration for the command.

It’s expected to be an XML file that follows our schema:

Example:

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <roave-bc-check
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:noNamespaceSchemaLocation="vendor/roave/backward-compatibility-check/resources/schema.xsd">
  5. <baseline>
  6. <ignored-regex>#\[BC\] CHANGED: The parameter \$a of of TestArtifact\\TheClass\#method\(\)#</ignored-regex>
  7. <ignored-regex>#\[BC\] CHANGED: The parameter \$b of of TestArtifact\\TheClass\#method2\(\)#</ignored-regex>
  8. </baseline>
  9. </roave-bc-check>