$30 off During Our Annual Pro Sale. View Details »

PHPMDのPHPMDによる静的解析結果

 PHPMDのPHPMDによる静的解析結果

2022-05-27
PHPerのための「静的解析」を語り合うPHP TechCafe
https://rakus.connpass.com/event/245646/

iwamot

May 27, 2022
Tweet

More Decks by iwamot

Other Decks in Technology

Transcript

  1. PHPMDの PHPMDによる静的解析結果 2022-05-27 PHPerのための「静的解析」を語り合うPHP TechCafe https://rakus.connpass.com/event/245646/ ENECHANGE株式会社 インフラエンジニア 岩本隆史 (@iwamot)

  2. 2019年、リファクタリングを任された 当時は旅行業の会社に勤めていた アクティビティ予約サービスをCakePHPで開発していた 20,000行超のファイルがあるなど、コードの品質が気になった リファクタリングしたいと申し出た

  3. 静的解析ツールを探し始めた リファクタリングの優先度を決めるのに使いたい

  4. PHPMDを見つけた https://phpmd.org/ PHP Mess Detector(いわゆる「コードの不吉な匂い」を検出) SiderやCodacyでも使われていたので、試す価値があると思った

  5. 好奇心から、PHPMD自体を解析した PHPMD自体もPHPで書かれている 当時のコードをいま解析するなら下記のような感じ $ git clone https://github.com/phpmd/phpmd.git $ cd phpmd

    $ git checkout 42bf8ad4 $ docker run -it --rm \ -v /path/to/phpmd/src:/src \ iwamot/phpmd-docker:2.12.0 /src html \ cleancode,codesize,controversial,design,naming,unusedcode \ --exclude /src/test > phpmd-result.html
  6. 不吉な匂いが35件も検出された

  7. OSS貢献のチャンスだと思った 不吉な匂いの検出ツールなのに、不吉な匂いが多いのは切ない 修正プルリクエストを送ろう!

  8. 修正ターゲットを決めた 未使用変数 $list が戻り値に使われている 明らかなバグはこれだけだった

  9. PRを送ったらマージされた https://github.com/phpmd/phpmd/pull/598

  10. めでたしめでたし

  11. しかし

  12. リファクタリングは完遂できなかった 自社サービスのコード解析は済ませた リファクタリングも順調に進めていた そこへ新型コロナが来てしまった いろいろあって退職することに

  13. PHPMDの不吉な匂いも増えている 当時の35件から39件に (fcb0f1f3)

  14. ともあれ

  15. 静的解析ツールを解析してみると 発見があるかも