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
「やめとこ」がなくなった — 1月にZennを始めて22本書いた AI共創開発のリアル
atani14
0
380
エージェント開発初心者の僕がエージェントを作った話と今後やりたいこと
thasu0123
0
240
Vuetify 3 → 4 何が変わった?差分と移行ポイント10分まとめ
koukimiura
0
130
AWS Infrastructure as Code の新機能 2025 総まとめ 〜SA 4人による怒涛のデモ祭り〜
konokenj
10
3.4k
OTP を自動で入力する裏技
megabitsenmzq
0
100
Codex の「自走力」を高める
yorifuji
0
1.2k
Unity6.3 AudioUpdate
cova8bitdots
0
130
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
460
How to stabilize UI tests using XCTest
akkeylab
0
120
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
15
8.7k
エラーログのマスキングの仕組みづくりに役立ったASTの話
kumoichi
0
210
2026年は Rust 置き換えが流行る! / 20260220-niigata-5min-tech
girigiribauer
0
230
Featured
See All Featured
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.3k
Imperfection Machines: The Place of Print at Facebook
scottboms
269
14k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The Curse of the Amulet
leimatthew05
1
10k
Automating Front-end Workflow
addyosmani
1370
200k
The Invisible Side of Design
smashingmag
302
51k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
640
Large-scale JavaScript Application Architecture
addyosmani
515
110k
We Have a Design System, Now What?
morganepeng
55
8k
The Language of Interfaces
destraynor
162
26k
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
140
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.5k
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