🤖

旧式Laravelでphp-cs-fixerベースのpintを使う

2023/11/27に公開

pint: php-cs-fixerベースのLaravel公式Linter

PSR12というコーディング規約があるが、
コードフォーマットにほとんど影響しないもので、
縛りプレイが大好きな会社はこれに満足しない。
(PERというのもあるが余り普及してないっぽい)

私のような手抜き開発者は誰かが決めたものでええやんと思ってしまう。
Laravelが公式で規約を決めてくれて、
ツールまで用意してくれている。
それが

Laravel Pint

Laravel Pint is an opinionated PHP code style fixer for minimalists. Pint is built on top of PHP-CS-Fixer and makes it simple to ensure that your code style stays clean and consistent.(Laravel Pintは、ミニマリストのためのPHPコードスタイルフィクサーです。PintはPHP-CS-Fixerの上に構築されており、コードスタイルをクリーンで一貫性のあるものに保つことができます。)

PHP-CS-FixerベースにLaravelの規約を積んだツール。
PHP_CodeSnifferで独自フォーマットを考えるより、
公式に任せた方がいいのですぐに使いたいが条件がある。

  • PHP8.1以上
  • Laravel9以上

手元の環境がPHP8.0, Laravel8

('ω') ....

条件足りないけど使えないかなぁ。
php-cs-fixerの拡張なら捏ね繰り回せばなんとか...
docker越しならいけるか。

ということでdocker経由で使う方法を考えてみた。

ヾ(・ω<)ノ" 三三三● ⅱⅲ コロコロ♪

------------------- ↓ 本題はここから ↓-------------------

Laravel Pintのインストール

composerでインストールするとバージョンで弾かれるので、
pharファイルを使う

bash
curl -LO https://github.com/laravel/pint/releases/latest/download/pint.phar

docker run

PHP8.1以上(用意したのはPHP8.2)のdockerイメージで、
サイズの小さいalpine版を使用
一端testモードで実行

bash
docker run --rm -it -v $(pwd):/app -w /app php:8.2-cli-alpine php ./pint.phar --test app/Logging/CustomizeFormatter.php
  ──────────────────────────────────────────────────────────────────────────────────────────────────────────── Laravel
    FAIL   ..................................................................................... 1 file, 1 style issue
  ⨯ app/Logging/CustomizeFormatter.php class_attributes_separation, phpdoc_scalar, no_superfluous_phpdoc_tags, phpdoc…

(/・ω・)/ イケルやん

------------------- ↓ 後書きはここから ↓-------------------

ファイルを指定しないと全ファイル一斉置換という暴挙に出るので、
使う際はかなり注意する必要がある。

参考:

https://medium.com/@matiasbenary/how-to-set-up-pint-in-docker-in-less-than-5-minutes-77513fb6f88b

Discussion