Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Why to use Scrutinizer
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
imunew
April 26, 2015
Programming
290
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Why to use Scrutinizer
Symfony Meetup #3 で発表したスライドです。
https://symfony.doorkeeper.jp/events/23051
#symfony_meetup
imunew
April 26, 2015
More Decks by imunew
See All by imunew
HHVM/Hackの 使いどころを探る Async編
imunew
0
300
Other Decks in Programming
See All in Programming
一人だけ、Kiroが静止する日
hideg
0
130
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
540
Kiroで創り、AgentCoreで繋ぐ!AWSで実践する「AI-DLC」から「AIエージェント統合」までの最新地図
licux
4
800
[GoCon2026] When Goroutines Are Not Enough: Runtime Locality in High-Throughput Go
takehaya
6
2.4k
すこし踏み込む CancellationToken
htkym
2
980
The Rails Doctrine Decade
koic
2
370
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
5
4.5k
アクセシビリティから考える情報設計
high_g_engineer
0
400
Heart of Swift Concurrency
koher
0
970
技術的負債を組織課題として解く-増えすぎたマイクロサービスとの戦い-
reimaru
1
2.3k
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
510
市販E-Readerを乗っ取れ 〜Embedded Swiftで電子ペーパーガジェットを制御する〜
trickart
0
210
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.2k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
680
So, you think you're a good person
axbom
PRO
2
2.2k
Mind Mapping
helmedeiros
1
370
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
390
We Have a Design System, Now What?
morganepeng
55
8.3k
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
260
Evolving SEO for Evolving Search Engines
ryanjones
0
300
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
510
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