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
290
Other Decks in Programming
See All in Programming
Testing Trophyは叫ばない
toms74209200
0
870
ぬるぬる動かせ! Riveでアニメーション実装🐾
kno3a87
1
210
パッケージ設計の黒魔術/Kyoto.go#63
lufia
3
430
「待たせ上手」なスケルトンスクリーン、 そのUXの裏側
teamlab
PRO
0
510
Android 16 × Jetpack Composeで縦書きテキストエディタを作ろう / Vertical Text Editor with Compose on Android 16
cc4966
1
200
速いWebフレームワークを作る
yusukebe
5
1.7k
AWS発のAIエディタKiroを使ってみた
iriikeita
1
180
複雑なドメインに挑む.pdf
yukisakai1225
5
1.1k
Deep Dive into Kotlin Flow
jmatsu
1
330
知っているようで知らない"rails new"の世界 / The World of "rails new" You Think You Know but Don't
luccafort
PRO
1
110
AI時代のUIはどこへ行く?
yusukebe
18
8.8k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
360
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Building an army of robots
kneath
306
46k
How to Ace a Technical Interview
jacobian
279
23k
The World Runs on Bad Software
bkeepers
PRO
70
11k
GitHub's CSS Performance
jonrohan
1032
460k
Writing Fast Ruby
sferik
628
62k
The Straight Up "How To Draw Better" Workshop
denniskardys
236
140k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
51
5.6k
Designing for Performance
lara
610
69k
Gamification - CAS2011
davidbonilla
81
5.4k
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