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
Sonar for Bitbucketを試してみた~全チームのコード品質をあげるために~
Search
NAVITIME JAPAN
PRO
June 27, 2019
Technology
0
110
Sonar for Bitbucketを試してみた~全チームのコード品質をあげるために~
2019/06/27開催された「第32回 Tokyo Atlassian ユーザーグループ at NAVITIME」にて発表した資料です。
NAVITIME JAPAN
PRO
June 27, 2019
Tweet
Share
More Decks by NAVITIME JAPAN
See All by NAVITIME JAPAN
つよつよリーダーが 抜けたらどうする? 〜ナビタイムのAgile⽀援組織の変遷〜
navitimejapan
PRO
23
15k
実践ジオフェンス 効率的に開発するために
navitimejapan
PRO
3
660
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
220
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
2.8k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.5k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
340
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.5k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.3k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
7
5.6k
Other Decks in Technology
See All in Technology
敢えて生成AIを使わないマネジメント業務
kzkmaeda
2
450
MUITにおける開発プロセスモダナイズの取り組みと開発生産性可視化の取り組みについて / Modernize the Development Process and Visualize Development Productivity at MUIT
muit
1
17k
タイミーのデータモデリング事例と今後のチャレンジ
ttccddtoki
6
2.4k
スタートアップに選択肢を 〜生成AIを活用したセカンダリー事業への挑戦〜
nstock
0
210
生成AI開発案件におけるClineの業務活用事例とTips
shinya337
0
260
KubeCon + CloudNativeCon Japan 2025 Recap by CA
ponkio_o
PRO
0
300
マネジメントって難しい、けどおもしろい / Management is tough, but fun! #em_findy
ar_tama
7
1.1k
Lazy application authentication with Tailscale
bluehatbrit
0
210
american aa airlines®️ USA Contact Numbers: Complete 2025 Support Guide
aaguide
0
180
無意味な開発生産性の議論から抜け出すための予兆検知とお金とAI
i35_267
4
13k
Model Mondays S2E04: AI Developer Experiences
nitya
0
140
使いたいMCPサーバーはWeb APIをラップして自分で作る #QiitaBash
bengo4com
0
1.9k
Featured
See All Featured
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
RailsConf 2023
tenderlove
30
1.1k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
It's Worth the Effort
3n
185
28k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
126
53k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
The Cult of Friendly URLs
andyhume
79
6.5k
We Have a Design System, Now What?
morganepeng
53
7.7k
KATA
mclloyd
30
14k
Being A Developer After 40
akosma
90
590k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Transcript
CONFIDENTIAL ©NAVITIME JAPAN Sonar for Bitbucketを 試してみた ~全チームのコード品質をあげるために~ 株式会社ナビタイムジャパン 佐藤
裕也
CONFIDENTIAL ©NAVITIME JAPAN 佐藤 裕也 ツール導入 / 運用 / サポート
グロースハック アジャイル推進
CONFIDENTIAL ©NAVITIME JAPAN こんなことありませんか?
CONFIDENTIAL ©NAVITIME JAPAN こんなことありませんか? レビューでの指摘が大変 ex)コード重複、nullチェック 1か月後…. 静的解析ツールを導入してみたけど 使わなくなった
CONFIDENTIAL ©NAVITIME JAPAN こんなことありませんか? レビューでの指摘が大変 ex)コード重複、nullチェック 1か月後…. 静的解析ツールを導入してみたけど 使わなくなった Sonar
for Bitbucket が 解決してくれます
CONFIDENTIAL ©NAVITIME JAPAN アジェンダ • Sonar for Bitbucketとは? • 何故導入しようと考えたのか?
• 試してみる • システム構成 • (超えていない)3つの壁 • パイロットでやってみて • まとめ
Sonar for Bitbucketとは
CONFIDENTIAL ©NAVITIME JAPAN Sonar とは 静的解析ツールです。 コード品質の可視化やバグを誘発しそうなコードの指摘等を行ってくれます。
CONFIDENTIAL ©NAVITIME JAPAN Sonar とは 静的解析ツールです。 コード品質の可視化やバグを誘発しそうなコードの指摘等を行ってくれます。 バグ/障害の防止 リファクタリング目標の数値化 エンジニアのモチベーション向上
CONFIDENTIAL ©NAVITIME JAPAN Sonar for Bitbucket とは Sonarの結果をBitbucketに表示させるプラグインです。
何故導入しようとしたのか
CONFIDENTIAL ©NAVITIME JAPAN 導入理由その1 全社的に品質を上げたい リファクタ したいな でも効果が みえにくいな… また
ヒアリハット!! レビュー多い…
CONFIDENTIAL ©NAVITIME JAPAN 導入理由その1 Sonar をみんなに使ってもらえば解決できそうだが….
CONFIDENTIAL ©NAVITIME JAPAN 導入理由その2 Sonarを導入しても廃れる懸念が... 1か月後….
CONFIDENTIAL ©NAVITIME JAPAN 導入理由その2 こんなものがあれば….
CONFIDENTIAL ©NAVITIME JAPAN 導入理由 そう、Sonar for Bitbucketです
試してみる
CONFIDENTIAL ©NAVITIME JAPAN 簡易システム構成 ①フック ②実行 ③解析結果 Bamboo等、 よく使うCIツールでOK 自前で用意
Sonar for Bitbcuket公式サイト 推奨のプラグイン
CONFIDENTIAL ©NAVITIME JAPAN 3つの壁 Jenkinsにパラメータが渡らない クローンURLを冗長化できない SonarとBitbucketの権限を同期できない
CONFIDENTIAL ©NAVITIME JAPAN 3つの壁 Jenkinsにパラメータが渡らない クローンURLを冗長化できない SonarとBitbucketの権限を同期できない
CONFIDENTIAL ©NAVITIME JAPAN Jenkinsにパラメータが渡らない ①フック ②実行 ③解析結果
CONFIDENTIAL ©NAVITIME JAPAN Jenkinsにパラメータが渡らない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA
リポジトリB リポジトリC
CONFIDENTIAL ©NAVITIME JAPAN Jenkinsにパラメータが渡らない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA
リポジトリB リポジトリC ・プロジェクトキー ・リポジトリキー ・ブランチ名
CONFIDENTIAL ©NAVITIME JAPAN Jenkinsにパラメータが渡らない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA
リポジトリB リポジトリC ・プロジェクトキー ・リポジトリキー ・ブランチ名
CONFIDENTIAL ©NAVITIME JAPAN Jenkinsにパラメータが渡らない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA
リポジトリB リポジトリC Sonar 実行ジョブ Sonar 実行ジョブ
CONFIDENTIAL ©NAVITIME JAPAN 3つの壁 Jenkinsにパラメータが渡らない クローンURLを冗長化できない SonarとBitbucketの権限を同期できない
CONFIDENTIAL ©NAVITIME JAPAN クローンURLを冗長化できない ①フック ②実行 ③解析結果
CONFIDENTIAL ©NAVITIME JAPAN クローンURLを冗長化できない ①フック ②実行 ③解析結果 ①’取得 厳密には…
CONFIDENTIAL ©NAVITIME JAPAN ①’取得 クローンURLを冗長化できない ①フック ②実行 ③解析結果 厳密には…
CONFIDENTIAL ©NAVITIME JAPAN Jenkinsにパラメータが渡らない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA
リポジトリB リポジトリC ①’取得 ①’取得 ①’取得
CONFIDENTIAL ©NAVITIME JAPAN Jenkinsにパラメータが渡らない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA
リポジトリB リポジトリC ①’取得 ①’取得 ①’取得 ①フック ②実行
CONFIDENTIAL ©NAVITIME JAPAN ①’取得 ①’取得 ①’取得 Jenkinsにパラメータが渡らない Sonar 実行ジョブ リポジトリA
リポジトリB リポジトリC リポジトリA リポジトリB リポジトリC
CONFIDENTIAL ©NAVITIME JAPAN クローンURLを冗長化できない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA
リポジトリB リポジトリC Sonar 実行ジョブ Sonar 実行ジョブ ①’取得 ①’取得 ①’取得
CONFIDENTIAL ©NAVITIME JAPAN 3つの壁 今お話しした2つの壁、昨日乗り越えました!
CONFIDENTIAL ©NAVITIME JAPAN 昨日乗り越えた壁 ①フック ②実行 ③解析結果
CONFIDENTIAL ©NAVITIME JAPAN 昨日乗り越えた壁 ②実行 ③解析結果 ①フック
CONFIDENTIAL ©NAVITIME JAPAN 昨日乗り越えた壁 Sonar 実行 ジョブ リポジトリA リポジトリB リポジトリC
リポジトリA リポジトリB リポジトリC ・プロジェクトキー ・リポジトリキー ・ブランチ名 自作 スクリプト payloadを解析 デフォルトの 機能でフック
CONFIDENTIAL ©NAVITIME JAPAN 3つの壁 Jenkinsにパラメータが渡らない クローンURLを冗長化できない SonarとBitbucketの権限を同期できない
CONFIDENTIAL ©NAVITIME JAPAN SonarとBitbucketの権限を同期できない
CONFIDENTIAL ©NAVITIME JAPAN SonarとBitbucketの権限を同期できない read read
CONFIDENTIAL ©NAVITIME JAPAN SonarとBitbucketの権限を同期できない read read
CONFIDENTIAL ©NAVITIME JAPAN SonarとBitbucketの権限を同期できない read read まずは閲覧制限のないリポジトリのみ
CONFIDENTIAL ©NAVITIME JAPAN 壁を乗り越えて...
CONFIDENTIAL ©NAVITIME JAPAN 解析サマリの表示
CONFIDENTIAL ©NAVITIME JAPAN プルリクの解析(Sonarのdeveloper editionが必用)
パイロットでやってみて
CONFIDENTIAL ©NAVITIME JAPAN パイロットでやってみて 早く本格導入して欲しいという声がちらほら Sonarの活用方法をまとめる必要あり →何か表示されているで終わってしまう
CONFIDENTIAL ©NAVITIME JAPAN まとめ • Sonar for Bitbucketではコード品質をBitbucket上に可視化できる • コード品質を可視化できると工数削減やモチベーションアップなど様々
なメリットがある • 乗り越えるべき壁はまだある • 運用の簡略化(jenkinsへのパラメータ渡し、クローンURLの冗長化) • Sonar活用方法の展開
CONFIDENTIAL ©NAVITIME JAPAN ありがとうございました!