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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
iwamot
PRO
May 27, 2022
Technology
940
0
Share
PHPMDのPHPMDによる静的解析結果
2022-05-27
PHPerのための「静的解析」を語り合うPHP TechCafe
https://rakus.connpass.com/event/245646/
iwamot
PRO
May 27, 2022
More Decks by iwamot
See All by iwamot
パワポ作るマンをMCP Apps化してみた
iwamot
PRO
0
300
8万デプロイ
iwamot
PRO
2
300
AIエージェント・マイクロサービス時代。AWSでの手軽な構築法を考えて試してみた
iwamot
PRO
1
73
これがLambdaレス時代のChatOpsだ!実例で学ぶAmazon Q Developerカスタムアクション活用法
iwamot
PRO
10
2.2k
Developer Certificate of Origin、よさそう
iwamot
PRO
0
57
復号できなくなると怖いので、AWS KMSキーの削除を「面倒」にしてみた CODT 2025 クロージングイベント版
iwamot
PRO
1
150
復号できなくなると怖いので、AWS KMSキーの削除を「面倒」にしてみた
iwamot
PRO
3
130
IPA&AWSダブル全冠が明かす、人生を変えた勉強法のすべて
iwamot
PRO
14
12k
2年でここまで成長!AWSで育てたAI Slack botの軌跡
iwamot
PRO
4
1.3k
Other Decks in Technology
See All in Technology
I ran an automated simulation of fake news spread using OpenClaw.
zzzzico
1
900
Podcast配信で広がったアウトプットの輪~70人と音声発信してきた7年間~/outputconf_01
fortegp05
0
230
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
3
2.1k
Tour of Agent Protocols: MCP, A2A, AG-UI, A2UI with ADK
meteatamel
0
200
あるアーキテクチャ決定と その結果/architecture-decision-and-its-result
hanhan1978
0
280
Data Intelligence Engineering Unit 部門と各ポジション紹介
sansantech
PRO
0
120
建設的な現実逃避のしかた / How to practice constructive escapism
pauli
3
140
AIがコードを書く時代の ジェネレーティブプログラミング
polidog
PRO
2
230
自分をひらくと次のチャレンジの敷居が下がる
sudoakiy
5
1.8k
Network Firewall Proxyで 自前プロキシを消し去ることができるのか
gusandayo
0
190
AWSで2番目にリリースされたサービスについてお話しします(諸説あります)
yama3133
0
120
AgentCore RuntimeからS3 Filesをマウントしてみる
har1101
2
170
Featured
See All Featured
Git: the NoSQL Database
bkeepers
PRO
432
67k
Writing Fast Ruby
sferik
630
63k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
670
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8k
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
420
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
310
Technical Leadership for Architectural Decision Making
baasie
3
310
Producing Creativity
orderedlist
PRO
348
40k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
The Cult of Friendly URLs
andyhume
79
6.8k
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)
ともあれ
静的解析ツールを解析してみると 発見があるかも