2022-05-27 PHPerのための「静的解析」を語り合うPHP TechCafe https://rakus.connpass.com/event/245646/
PHPMDのPHPMDによる静的解析結果2022-05-27PHPerのための「静的解析」を語り合うPHP TechCafehttps://rakus.connpass.com/event/245646/ENECHANGE株式会社 インフラエンジニア岩本隆史 (@iwamot)
View Slide
2019年、リファクタリングを任された当時は旅行業の会社に勤めていたアクティビティ予約サービスをCakePHPで開発していた20,000行超のファイルがあるなど、コードの品質が気になったリファクタリングしたいと申し出た
静的解析ツールを探し始めたリファクタリングの優先度を決めるのに使いたい
PHPMDを見つけたhttps://phpmd.org/PHP Mess Detector(いわゆる「コードの不吉な匂い」を検出)SiderやCodacyでも使われていたので、試す価値があると思った
好奇心から、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
不吉な匂いが35件も検出された
OSS貢献のチャンスだと思った不吉な匂いの検出ツールなのに、不吉な匂いが多いのは切ない修正プルリクエストを送ろう!
修正ターゲットを決めた未使用変数 $list が戻り値に使われている明らかなバグはこれだけだった
PRを送ったらマージされたhttps://github.com/phpmd/phpmd/pull/598
めでたしめでたし
しかし
リファクタリングは完遂できなかった自社サービスのコード解析は済ませたリファクタリングも順調に進めていたそこへ新型コロナが来てしまったいろいろあって退職することに
PHPMDの不吉な匂いも増えている当時の35件から39件に (fcb0f1f3)
ともあれ
静的解析ツールを解析してみると発見があるかも