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
890
今だからこそ入門する Server-Sent Events (SSE)
nearme_tech
PRO
3
250
請來的 AI Agent 同事們在寫程式時,怎麼用 pytest 去除各種幻想與盲點
keitheis
0
130
複雑なフォームに立ち向かう Next.js の技術選定
macchiitaka
2
220
MCPでVibe Working。そして、結局はContext Eng(略)/ Working with Vibe on MCP And Context Eng
rkaga
5
2.3k
rage against annotate_predecessor
junk0612
0
170
The Past, Present, and Future of Enterprise Java with ASF in the Middle
ivargrimstad
0
170
基礎から学ぶ大画面対応(Learning Large-Screen Support from the Ground Up)
tomoya0x00
0
3.3k
Ruby Parser progress report 2025
yui_knk
1
460
テストコードはもう書かない:JetBrains AI Assistantに委ねる非同期処理のテスト自動設計・生成
makun
0
520
楽して成果を出すためのセルフリソース管理
clipnote
0
190
機能追加とリーダー業務の類似性
rinchoku
2
1.3k
Featured
See All Featured
Building Better People: How to give real-time feedback that sticks.
wjessup
368
19k
Large-scale JavaScript Application Architecture
addyosmani
513
110k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
Faster Mobile Websites
deanohume
309
31k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
268
13k
4 Signs Your Business is Dying
shpigford
184
22k
BBQ
matthewcrist
89
9.8k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.7k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.4k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
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