エロい人
ヤれと言われたのやらかしてみました。ポロリもあるよ
- 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 }}





