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
500
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
330
サービスクォータ、ちゃんと監視してますか?
iwamot
0
600
AWS Well-Architected Toolで信頼性をレビューした結果
iwamot
0
300
テックカンパニーとしてのENECHANGEの中期目標
iwamot
0
53
AIの活用状況と今後の展望
iwamot
0
48
ENECHANGE社のAWSセキュリティ改革ストーリー
iwamot
0
120
ALBのアクセスログをAthenaで分析してSLOをゆるく決める
iwamot
2
1k
ChatGPT in SlackでAI Slackbotを楽しく運用する
iwamot
1
340
Function callingによるSlackbotの機能拡張
iwamot
2
150
Other Decks in Technology
See All in Technology
アクセス制御にまつわる改善 / Improving access control
itkq
0
500
エンジニアのキャリアをちょっと楽しくする3本の軸/Three Pillars to Make an Engineer's Career More Enjoyable
kwappa
0
2.6k
Vertex AI を中心に 生成AIのアップデートを共有します
kaz1437
0
280
MLOpsの「壁」を乗り越える、LINEヤフーの Data Quality as Code
lycorptech_jp
PRO
4
230
検証を通して見えてきたTiDBの性能特性
lycorptech_jp
PRO
6
3.7k
JSON攻略法.pdf
miyakemito
8
4.7k
4年前、あるじゃん老害エンジニアLT合戦に登壇、米国西海岸コンピュータ歴史博物館体験記の続編
toshi_atsumi
0
220
Meta Quest 3 で動く桜マシマシ WebXR アプリを IBM Cloud Code Engine と Babylon.js で作った話
1ftseabass
PRO
0
120
「手動オペレーションに定評がある」と言われた私が心がけていること / phpcon_odawara2024
blue_goheimochi
2
370
カオナビの利用実績をアウトカムへつなげる旅 / example-of-data-management-startup-in-kaonavi
kaonavi
0
130
アクセシビリティを考慮したUI/CSSフレームワーク・ライブラリ選定
yajihum
2
990
Azure Container Apps + Bicep 〜 こんな感じで運用しています
kaz29
2
420
Featured
See All Featured
Automating Front-end Workflow
addyosmani
1355
200k
The Illustrated Children's Guide to Kubernetes
chrisshort
30
46k
[RailsConf 2023] Rails as a piece of cake
palkan
22
3.9k
Keith and Marios Guide to Fast Websites
keithpitt
408
22k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
Gamification - CAS2011
davidbonilla
76
4.6k
What's new in Ruby 2.0
geeforr
337
31k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
24
2.3k
Atom: Resistance is Futile
akmur
258
25k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
13
1.5k
How GitHub (no longer) Works
holman
304
140k
Fantastic passwords and where to find them - at NoRuKo
philnash
36
2.5k
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)
ともあれ
静的解析ツールを解析してみると 発見があるかも