エロい人ヤれと言われたのやらかしてみました。ポロリもあるよ
- PHP_CodeSnifferってなんやねん?
- 嫁イビリが生き甲斐の姑みたいな存在で細かいことでネチネチ嫌味を言う存在でPHP コードの品質を保つために使用されるツールで、コーディングルールを守れとかチェックしてくれる
開発者泣かせのコードの品質を保ってくれるスンバラシイツールdeathね!
設計内容
- developmentブランチにPullRequestするときに自動的にPHP_CodeSnifferを実行する
- コーディング規約はPSR-12とする
- チェックするファイルはsrc以下の.phpファイルが対象。ただし、vendorはチェックしない
- developmentブランチにPullRequestするときに自動的にPHP_CodeSnifferを実行する
- PHP_CodeSnifferの内容はactionから確認する
1 適切なブランチに.github/workflows/php-codesniffer.ymlを作成する
name: PHP_CodeSniffer によるコードチェック #developmentブランチへのプルリクエスト時に実行 on: pull_request: branches: - development jobs: phpcs: runs-on: ubuntu-latest steps: - name: リポジトリのチェックアウト uses: actions/checkout@v4 - name: PHPの導入 uses: shivammathur/setup-php@v2 with: php-version: 'latest' - name: Composerのインストール run: | curl -sS https://getcomposer.org/installer | php php composer.phar global require "squizlabs/php_codesniffer=*" - name: PHP CodeSnifferの実行 run: | phpcs --standard=PSR12 src/ --ignore=vendor/ --extensions=php exit_code=$? if [ $exit_code -ne 0 ]; then exit 1 fi
2. 1で作ったブランチをmasterとdevelopmentブランチにマージする
あとはdevelopmentブランチにプルリクを出せばPHP_CodeSnifferによるコードチェックが行われます。
phpcs –standard=PSR12 src/ –ignore=vendor/ –extensions=php でオプションを変更できますので環境に合わせて調節してください
では!
おまけ
PullRequestのコメントとしてPHP_CodeSnifferの内容を出力してましたが情報量が多すぎて没にしました。
name: PHP CodeSniffer によるコードチェック on: pull_request: branches: - development jobs: phpcs: runs-on: ubuntu-latest permissions: pull-requests: write steps: - name: チェックアウト uses: actions/checkout@v4 with: token: ${{ secrets.PHP_CS_TOKEN }} - name: PHPのインストール uses: shivammathur/setup-php@v2 with: php-version: 'latest' - name: Goのインストール uses: actions/setup-go@v5 with: go-version: '1.21' - name: php_codesnifferのインストール run: | curl -sS https://getcomposer.org/installer | php php composer.phar global require "squizlabs/php_codesniffer=*" - name: reviewdogのダウンロードとビルド run: | curl -L -o reviewdog.zip https://github.com/reviewdog/reviewdog/archive/refs/tags/v0.20.3.zip unzip reviewdog.zip cd reviewdog-0.20.3 go build -o ../reviewdog ./cmd/reviewdog cd .. mkdir -p bin mv reviewdog bin/ - name: PHP_CodeSnifferを実行して結果をxmlで出力する run: | ~/.composer/vendor/bin/phpcs --standard=PSR12 src/ \ --ignore=vendor/ --extensions=php \ --report=checkstyle > /tmp/phpcs-report.xml || true - name: reviewdog でレビューとして出力する run: | bin/reviewdog \ -f=checkstyle \ -name="phpcs" \ -reporter=github-pr-review \ -filter-mode=diff_context \ -fail-on-error=false \ -level=error < /tmp/phpcs-report.xml env: REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.PHP_CS_TOKEN }}