![見出し画像](https://assets.st-note.com/production/uploads/images/109442448/rectangle_large_type_2_442d32e6463e2111eb7d640420651144.png?width=1200)
GithubActions + CodeSnifferでコーディング規約を自動チェックする
アイミツ開発チームでエンジニアリングをしている deliku です!
直近で Larastan と reviewdog の導入をしたことをブログに書きましたが、
コーディング規約チェックも同様の仕組みを利用して、開発フローに組み込んでいきます。
コーディング規約
プログラミング品質を均質にするために定めるルールのことです。
チームで開発をするうえで、個々に好きな書き方をしてしまうと保守性や可読性の低下につながり、不具合が発生する要因になります。
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.
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に通知するようにしています。
![](https://assets.st-note.com/img/1662808068830-y9ELp9PYzG.png?width=1200)
PullRequestに規約違反のコードがあると、下記のように reviewdog が 指摘理由を教えてくれます。すごい便利ですね!
![](https://assets.st-note.com/img/1662808135971-WL0jCPnejK.png?width=1200)
▶︎ 最後に
前回の静的解析に続き、コーディング規約もCIでチェックすることで、コードの品質を維持しやすくなりました。また、開発に利用しているエディタで、保存時に自動フォーマットするように設定すれば、CIで指摘されることもなくなるでしょう。
▶ 【PR】ユニラボ に興味がある方へ
今回の記事を読んでユニラボに興味を持っていただけた方は、まずはカジュアル面談でざっくりお話させていただければと思います!