見出し画像

GithubActions + CodeSnifferでコーディング規約を自動チェックする

アイミツ開発チームでエンジニアリングをしている deliku です!
直近で Larastanreviewdog の導入をしたことをブログに書きましたが、
コーディング規約チェックも同様の仕組みを利用して、開発フローに組み込んでいきます。

コーディング規約

プログラミング品質を均質にするために定めるルールのことです。
チームで開発をするうえで、個々に好きな書き方をしてしまうと保守性や可読性の低下につながり、不具合が発生する要因になります。

PSR(PHP Standard Recommendation)

PSRは、PHP-FIGが策定しているPHPコーディング規約です。

Laravel は、PSR-2 / PSR-4に準拠しているようです。現状PSR-2は非推奨なので、私たちの開発チームでは、PSR-2の拡張版のPSR-12を採用することにしています。

Laravel follows the PSR-2 coding standard and the PSR-4 autoloading standard.

https://laravel.com/docs/master/contributions#coding-style

GithubActionsでCodeSnifferを動かしてみる

PullRequestをトリガーに解析するように下記のようなyml .github/workflows/php-codesniffer-check.yml を作成します。(実際に使っている ymlとは少し違います)

name: 'php codesniffer check with reviewdog'

on:
  pull_request:

jobs:
  php-codesniffer:
    runs-on: ubuntu-latest
    env:
      ROOT_DIRECTORY: ./
      LARAVEL_DIRECTORY: ./laravel
    steps:
      - uses: actions/checkout@v2
      - name: Setup PHP version
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.0'
      - name: copy .env for laravel
        run: cp .laravel.local.env ./laravel/.env
        working-directory: ${{env.ROOT_DIRECTORY}}
      - name: composer install
        run: composer install -q --no-ansi --no-interaction --no-scripts --no-progress --prefer-dist
        working-directory: ${{env.LARAVEL_DIRECTORY}}
      - uses: reviewdog/action-setup@v1
        with:
          reviewdog_version: latest
      - name: run codesniffer with reviewdog
        env:
          REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: ./vendor/bin/phpcs --report=emacs --standard=.phpcs.xml ./ | reviewdog -reporter=github-pr-review -efm='%f:%l:%c:%m' -fail-on-error=true
        working-directory: ${{env.LARAVEL_DIRECTORY}}

解析結果により指摘事項があった場合、slackに通知するようにしています。

PullRequestに規約違反のコードがあると、下記のように reviewdog が 指摘理由を教えてくれます。すごい便利ですね!

▶︎ 最後に

前回の静的解析に続き、コーディング規約もCIでチェックすることで、コードの品質を維持しやすくなりました。また、開発に利用しているエディタで、保存時に自動フォーマットするように設定すれば、CIで指摘されることもなくなるでしょう。

▶ 【PR】ユニラボ に興味がある方へ

今回の記事を読んでユニラボに興味を持っていただけた方は、まずはカジュアル面談でざっくりお話させていただければと思います!


この記事が気に入ったらサポートをしてみませんか?