PHPStanの実行結果をreviewdogとGitHub Actionsを用いてPRにレビューコメントできるようにする

PHPStanというPHPの静的解析ツールがある。

github.com

歴史あるPHPプロダクトにこれを導入する場合、解析レベルを低めに設定したとしても、既存コードで多くのエラーが出ることがある。もちろんそれらのエラーを潰していくことも大事だが、ひとまず小さく導入していくために「PRの追加分に対してのみPHPStanの実行結果が分かる状態にする&CIは落とさない」ことを目指していきたい。

今回はこれを実現するためにreviewdogとGitHub Actionsを使う。

github.com

設定は簡単で、こんな感じでやれば良い。

name: ci

on: pull_request

jobs:
  reviewdog:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - uses: reviewdog/action-setup@v1
        with:
          reviewdog_version: latest

      - name: setup composer
        run: composer install

      - name: static code analysis
        env:
          REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: ./vendor/bin/phpstan analyse --no-progress --error-format=raw | reviewdog -f=phpstan -reporter=github-pr-review

そうすると、よろしくないコードを書くとこんな感じで自動でレビューコメントしてくれる。

f:id:purple_jwl:20210606222235p:plain

PRの追加分に対してのみレビューコメントがつくし、CIは落とさないので、導入の段階でPHPStanの解析レベルを高めに設定することも可能になる。

結果として、漸進的な改善に繋がったり、型を意識した開発をする習慣がついたりするだろう。また、チーム開発においては、自動でレビューコメントがつく分、レビュアー(人間)のレビューコストが下がり、開発効率の向上も見込めると思う。