Upgrade to Pro — share decks privately, control downloads, hide ads and more …

もう細かいレビューは したくない、されたくない

namizatork
August 25, 2021

もう細かいレビューは したくない、されたくない

Laravel MeetUp Okinawa で話した内容です。

Laravelを使った Github Actions, 静的解析(Larastan), 自動整形(PHP-CS-Fixer)の説明と使い方について発表しました。

namizatork

August 25, 2021
Tweet

More Decks by namizatork

Other Decks in Programming

Transcript

  1. Bengo4.com, Inc. 静的解析とは • 仕様 ◦ プログラムを実行せずに解析される(ただし PHPstanは一部実行する) ◦ 未定義の変数/メソッド/Class/プロパティなどを検出

    ◦ その他PHPDocの構文不備や分岐のチェックも • メリット ◦ 静的に解析される箇所は網羅的にテストができる ◦ テストを書く必要がないのでコストが少ない ◦ 変数の未定義など細かいエラーが事前に分かるのでコードレビューの手間が省ける • デメリット ◦ 無限ループなどは検出できない 13
  2. Bengo4.com, Inc. Levelや範囲などの設定 15 /phpstan.neon • includes ◦ 設定ファイルの読み込み •

    paths ◦ 対象ファイル • level ◦ 静的解析のレベル 1 ~ 7 • excludePaths ◦ 無視ファイル
  3. Bengo4.com, Inc. 自動整形(PHP-CS-Fixer) コーディング規約を設定した基準沿って自動でコーディングを統一する機能。 その機能をPHPで提供されているのが PHP-CS-Fixer (他にもPHP_CodeSnifferなどがある) で す。 PHP-CS-Fixer

    では公式で PSR-1 や PSR-2 、他にも Symfonyコミュニティ の標準 などが用意され ていて、それらを使うことも自身でカスタマイズして使用することができる。 また VSCode でプラグインも用意されており、保存時に自動整形することも可能です。 18
  4. Bengo4.com, Inc. カスタマイズ 19 /.php-cs-fixer.dist.php ver3.0.0 からphpファイル • Finder::create() ◦

    対象ファイル • setRiskyAllowed ◦ リスクが高い変更の許可 • setRules ◦ カスタマイズするルール設定 を記述
  5. Bengo4.com, Inc. CI(GithubActions) CIとは、Continuous Integrationの略で、継続的インテグレーションと呼ばれていて、 開発、テスト、リリースのサイクルが継続的に行われていく様子の事であり、それらを円滑に使用出来る 様にしたものがCIツールです。 CIツールは Github Actions

    だけでなく、複数のツールが存在している( Circle CIなど) Github Actions を使うメリットは無料( privateリポジトリは月2,000時間まで)という点と、普段利用し ている Github内のプロジェクトに .github/workflows/ ディレクトリを用意して設定ファイルを書くだけ で利用できる手軽さにあります。(個人的見解) 他にも公式が用意しているテンプレートを使用することもできます。 22
  6. Bengo4.com, Inc. Github Actions の 設定ファイル 23 • /.github/workflows/ に

    yaml形式で記入する • on: CIが走るタイミングを決め る • jobs: stepsの集まり • steps: jobを構成するAction • などなど
  7. Bengo4.com, Inc. PHP-CS-Fixer 26 /.github/workflows/php-cs-fixe r.yml こちらもLarastanと同様のトリガー でテストを実行します。 今回は `dry-run`

    で差分を出力ま でしかしていません。 自動整形を適用させたい人は ↓追加 ./vendor/bin/php-cs-fixer fix -v --diff
  8. Bengo4.com, Inc. プルリクを作成 28 先ほどの実装でプルリクを作ってみ た。 Github Actions を使っていると、 Merge

    pull request の上にテスト が走っているのが分かる。 テストが落ちると右の図のように、ど のテストが落ちていて、 Merge pull request が不活性になっているのが 確認できる。 CIが走っている CIが落ちている
  9. Bengo4.com, Inc. 修正して再度プッシュ 31 先ほどの内容をfixupで修正して、 再度プッシュしてみました。 そうするとテストが全部通って、 Merge pull requestが活性化して

    いるのが確認できました。 これでプルリクでレビュワーをアサイ ンする前に細かいレビューで指摘さ れることがなくなりました!ヤッタネ ( ^ω^ )