Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PHPMDのPHPMDによる静的解析結果
Search
iwamot
May 27, 2022
Technology
0
530
PHPMDのPHPMDによる静的解析結果
2022-05-27
PHPerのための「静的解析」を語り合うPHP TechCafe
https://rakus.connpass.com/event/245646/
iwamot
May 27, 2022
Tweet
Share
More Decks by iwamot
See All by iwamot
ECS on FargateへのSeekable OCI導入レポート
iwamot
0
350
サービスクォータ、ちゃんと監視してますか?
iwamot
0
670
AWS Well-Architected Toolで信頼性をレビューした結果
iwamot
0
340
テックカンパニーとしてのENECHANGEの中期目標
iwamot
0
58
AIの活用状況と今後の展望
iwamot
0
49
ENECHANGE社のAWSセキュリティ改革ストーリー
iwamot
0
120
ALBのアクセスログをAthenaで分析してSLOをゆるく決める
iwamot
2
1.1k
ChatGPT in SlackでAI Slackbotを楽しく運用する
iwamot
1
350
Function callingによるSlackbotの機能拡張
iwamot
2
170
Other Decks in Technology
See All in Technology
B2C、B2B プロダクトマネジメントの違い(および思考の罠) / B2C, B2B PM and reduction fallacy
ykmc09
5
1.9k
サイボウズ 開発本部採用ピッチ / Cybozu Engineer Recruit
cybozuinsideout
PRO
9
37k
Taking Flight with Tailwind CSS
opdavies
0
4.3k
多言語化対応における TypeScript の型定義を通して開発のしやすさについて考えた / TSKaigi TypeScript Multilingualization
nabeliwo
2
380
グイグイ系QAエンジニアでやっていくよ!
____rina____
0
730
QAエンジニアが伝えたい品質保証の羅針盤 / Compass for Quality Assurance
mii3king
1
320
株式会社EventHub・エンジニア採用資料
eventhub
0
2.1k
TiDBにおけるテーブル設計と最適化の事例
cygames
0
770
拓展QA日常工作的邊界
line_developers_tw
PRO
0
510
能動学習のいろは:書籍「Human-in-the-Loop機械学習」3〜5章
hiroyoshiito
0
290
スクラムに出会って「できた」を実感できるようになってきた話 / Scrum makes me feel like I can do it
yayoi_dd
2
110
使われないものを作るな!出口から作るデータ分析基盤 / Data Platform Development Starting from the User Needs
amaotone
16
4.1k
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
67
14k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
123
39k
Art, The Web, and Tiny UX
lynnandtonic
290
19k
Clear Off the Table
cherdarchuk
85
310k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
Producing Creativity
orderedlist
PRO
338
39k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
12
1.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
14
8.4k
Thoughts on Productivity
jonyablonski
60
3.9k
The Cult of Friendly URLs
andyhume
74
5.7k
Docker and Python
trallard
35
2.7k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
188
16k
Transcript
PHPMDの PHPMDによる静的解析結果 2022-05-27 PHPerのための「静的解析」を語り合うPHP TechCafe https://rakus.connpass.com/event/245646/ ENECHANGE株式会社 インフラエンジニア 岩本隆史 (@iwamot)
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)
ともあれ
静的解析ツールを解析してみると 発見があるかも