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

#phperkaigi【実録】「PHP_CodeSniffer」で始める快適コードレビューライフ/codereviewlife

mrstsgk
March 25, 2023

 #phperkaigi【実録】「PHP_CodeSniffer」で始める快適コードレビューライフ/codereviewlife

mrstsgk

March 25, 2023
Tweet

Other Decks in Programming

Transcript

  1. #PHPerKaigi 2023
    ©2023 RAKUS Co., Ltd.
    【実録】「PHP_CodeSniffer」で始める
    快適コードレビューライフ

    2023/03/25 PHPerKaigi 2023

    株式会社ラクス

    森下 繁喜


    View Slide

  2. #PHPerKaigi 2023
    自己紹介

    ● 森下 繁喜(もりした しげき)

    ○ 株式会社ラクス

    ○ 開発担当

    ● 趣味

    ○ 筋トレ(ベンチプレス80kg挙げる系PHPer)



    2

    View Slide

  3. #PHPerKaigi 2023
    3
    アジェンダ
    §1. 「PHP_CodeSniffer」について

    §2. 「PHP_CodeSniffer」を導入するに至った経緯

    §3. 「PHP_CodeSniffer」を導入してみて

     ※導入手順や設定ファイルなどについては触れません


    View Slide

  4. #PHPerKaigi 2023
    4
    §1. 「PHP_CodeSniffer」について

    ● PHP_CodeSnifferとは

    ○ コーディング規約の違反を検出するライブラリです。

    ○ PSRやPEARなどの様々なコーディング規約を指定して検査を実施していま
    す。

    ○ 独自の規約を追加することも可能です。


    View Slide

  5. #PHPerKaigi 2023
    5
    §1. 「PHP_CodeSniffer」について

    ● チームでの運用方法

    ○ CIに組み込んでチェック


    View Slide

  6. #PHPerKaigi 2023
    6
    §2. 「PHP_CodeSniffer」を導入するに至った経緯

    突然ですが、

    コードレビューって辛くないですか?


    View Slide

  7. #PHPerKaigi 2023
    7
    §2. 「PHP_CodeSniffer」を導入するに至った経緯

    ● コードレビュー時に確認すること

    ○ コーディング規約

    ○ ネーミング規約

    ○ ソースコードの可読性  など




    View Slide

  8. #PHPerKaigi 2023
    8
    §2. 「PHP_CodeSniffer」を導入するに至った経緯

    ● コードレビュー時に確認すること

    ○ コーディング規約

    ○ ネーミング規約

    ○ ソースコードの可読性  など



    確認することが

    多すぎる!!


    View Slide

  9. #PHPerKaigi 2023
    9
    §2. 「PHP_CodeSniffer」を導入するに至った経緯

    ● コーディング規約・ネ―ミング規約の数が多い

    ○ コーディング規約:57件

    ○ ネーミング規約 :26件    合計:83件

    ● 機械的にチェックできる規約も...

    ○ クラス名の単語の先頭は大文字にする

    ○ インデントは空白文字2文字分


    View Slide

  10. #PHPerKaigi 2023
    10
    §2. 「PHP_CodeSniffer」を導入するに至った経緯
    ● 問題点

    ○ コーディング規約・ネーミング規約の確認に時間がかかる

    ○ 確認漏れが発生

    ○ 指摘、指摘対応、再レビューの工数がかかる

    View Slide

  11. #PHPerKaigi 2023
    11
    §2. 「PHP_CodeSniffer」を導入するに至った経緯
    コーディング規約・ネーミング規約のうち、

    機械チェック可能なものは自動でチェックしてほしい


    View Slide

  12. #PHPerKaigi 2023
    12
    §2. 「PHP_CodeSniffer」を導入するに至った経緯

    PHP_CodeSnifferを導入しましょう!

    View Slide

  13. #PHPerKaigi 2023
    13
    §3. 「PHP_CodeSniffer」を導入してみて
    ● コードレビューでの負担が減った?


    View Slide

  14. #PHPerKaigi 2023
    14
    §3. 「PHP_CodeSniffer」を導入してみて

    しかし

    View Slide

  15. #PHPerKaigi 2023
    15
    §3. 「PHP_CodeSniffer」を導入してみて
    
 めっちゃ怒られる

    View Slide

  16. #PHPerKaigi 2023
    16
    §3. 「PHP_CodeSniffer」を導入してみて

    なぜ?

    View Slide

  17. #PHPerKaigi 2023
    17
    §3. 「PHP_CodeSniffer」を導入してみて
    ● Commitを開発完了時にまとめてPushしていた

    ○ CI実行時にまとめて修正指摘が返ってくる


    View Slide

  18. #PHPerKaigi 2023
    18
    §3. 「PHP_CodeSniffer」を導入してみて
    ● 開発中に細かいCommit粒度でPushするように
    ○ その結果、
    「開発→CIでコードを確認→修正」のサイクルで
    実装に集中しやすい状態ができた。

    View Slide

  19. #PHPerKaigi 2023
    19
    §3. 「PHP_CodeSniffer」を導入してみて
    ● ほかに困ったことは?

    ○ 警告への対処法がわからない

    → 各メンバーで発生した警告の対処法を

      チームで共通のシートにまとめる

      


    View Slide

  20. #PHPerKaigi 2023
    20
    まとめ
    ● 静的解析ツール最高!!
    ○ レビューコストの削減 ← 本来の目的
    ○ 実装コストの削減
    チェックする項目数を30%削減できた!
       合計:83件 → 57件に

    View Slide

  21. #PHPerKaigi 2023
    おわり
        ご清聴ありがとうございました!!
    21

    View Slide