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
Why to use Scrutinizer
Search
imunew
April 26, 2015
Programming
0
280
Why to use Scrutinizer
Symfony Meetup #3 で発表したスライドです。
https://symfony.doorkeeper.jp/events/23051
#symfony_meetup
imunew
April 26, 2015
Tweet
Share
More Decks by imunew
See All by imunew
HHVM/Hackの 使いどころを探る Async編
imunew
0
300
Other Decks in Programming
See All in Programming
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
270
今から始めるClaude Code超入門
448jp
8
9k
ぼくの開発環境2026
yuzneri
0
240
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
180
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
620
AI時代の認知負荷との向き合い方
optfit
0
160
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
610
humanlayerのブログから学ぶ、良いCLAUDE.mdの書き方
tsukamoto1783
0
200
Smart Handoff/Pickup ガイド - Claude Code セッション管理
yukiigarashi
0
140
Oxlintはいいぞ
yug1224
5
1.3k
組織で育むオブザーバビリティ
ryota_hnk
0
180
CSC307 Lecture 02
javiergs
PRO
1
780
Featured
See All Featured
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
97
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
GraphQLの誤解/rethinking-graphql
sonatard
74
11k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
The Cult of Friendly URLs
andyhume
79
6.8k
エンジニアに許された特別な時間の終わり
watany
106
230k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
Design in an AI World
tapps
0
140
Building Applications with DynamoDB
mza
96
6.9k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
93
It's Worth the Effort
3n
188
29k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
120
Transcript
Why to use Scrutinizer Improve code quality and find bugs
before they hit production with our continuous inspection platform symfony meetup #3 (2015.04.26) @imunew
Who am I? hitomedia, inc. Innovation Div. Deputy CTO Motohiro
Imura @imunew
What do I do?
use php;
話すこと • scrutinizer-‐‑‒ciを活⽤用した品質向上 への取り組み • PHP開発における静的コード解析の 重要性
話さないこと • symfonyについて • デプロイについて テストが通ったら⾃自動的に◦◦環境に デプロイ... • インフラについて いみゅーたぶるいんふらすとらくちゃー
scrutinize-‐‑‒ciを導⼊入した きっかけ
• Symfonyもくもく会 #4 を開催しました -‐‑‒ kseta's blog http://kseta.hatenablog.jp/entry/2015/02/22/222158 •
⼊入社当時(2013年年5⽉月頃)、Jenkins +phpcpd、phpmdで社内のコードを静的 解析して遊んでいた http://www.ryuzee.com/contents/blog/3453 http://www.ryuzee.com/contents/blog/3479
First Buildを成功させる までにしたこと
• sign in (Log in via Github) • Add Repository
• Build 失敗 = Test Failed – ここで若若⼲干試⾏行行錯誤 – /.scrutinizer.yml を作成 – 除外ファイルを指定 – テスト実⾏行行前に必要な処理理を記述 – テスト実⾏行行時のコマンドを記述(上書き) – とりあえず、テストを全部成功させる (phpunit.xml でexclude設定したり)
None
First Buildが成功した後 にしたこと
• Summary (Code Rating, Coverage)
• Issue
• すぐ修正できる箇所は修正 – 未定義のメンバ変数への代⼊入 – 未使⽤用のコードを削除 • PHPの⾔言語仕様を再確認 – selfとstaticの違い
private static な変数に、static::$hogeと参照すると、 Bugでissueが... • とにかくRatingに⼀一喜⼀一憂 – 点数が上がるのが楽しい(ゲーミフィケーション)
None
None
Workflow
1. 作業⽤用ブランチを作成 2. リモートにpush(空でもOK) 3. [WIP] PR作成 4. push 5.
Scrutinizer-‐‑‒CIのビルド結果を確認 6. 問題なければ、[WIP]を外してレビュー 7. merge pull request
scrutinizer-‐‑‒ciを導⼊入して みて変わったこと
• 品質が可視化、定量量化された • ⾃自分達の実⼒力力が分かる • はっきりとした数値⽬目標を作りやすい • 社内や社外のStakeholderに説明する材料料になる – 全社共有会でRatingを発表
– お客様とのミーティングにて取り組みを紹介 • ⼀一定レベルの品質を保てる – エンジニアが多いチームには特に有効
課題
• scrutinizer-‐‑‒ciでビルドしないと問題がわから ない – php-‐‑‒analyzerを単体でローカルで実⾏行行したい • issueが多すぎる – issue filterの検討 • ローカルではテストが成功するのに、
scrutinizer-‐‑‒ciでテストが失敗する – scrutinizer-‐‑‒ciがどうやってsourceを取ってきてい るか詳細が分からない – ssh loginさせてほしい
あらためて思うところ
• PHPは柔軟=厳格ではない PHP is crazy. HHVM + Hack == PHP++
https://www.youtube.com/watch?v=ihJeXNqK9jU
• コードレビューは、バグを検出するためにする のではない – レビュアーだって間違えるし、完璧ではない – コードレビューにおいて⼤大事なことは、コードや 設計について議論論や相談をすること • ソフトウェアがソフトウェアを作る時代では
まだない – ソフトウェアを作るのは⼈人間 – ⼈人間は間違える – 性悪説に基づいて品質を考える
• まず最初は静的検査ツールを使う IPA ISEC セキュア・プログラミング講座 第2章 脆弱性回避策とソフトウェア開発⼯工程:ソースコードレビュー http://www.ipa.go.jp/security/awareness/vendor/programmingv2/ contents/c103.html
• 正しいコーディング、Best Practiceを チームメンバー全員が理理解することが重 要 • 間違えを出さないのではなく、間違えを 出しにくくする、間違えに早く気付くこ とが重要 •
とにかく、scrutinizer-‐‑‒ci 使いましょう
ご清聴ありがとうご ざいました
さいごに http://www.amazon.co.jp/dp/4863541686