Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

好奇心から、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

Slide 6

Slide 6 text

不吉な匂いが35件も検出された

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

めでたしめでたし

Slide 11

Slide 11 text

しかし

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

ともあれ

Slide 15

Slide 15 text

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