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
130
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
790
安全で使いやすいCarPlayアプリの 魅せ方:HIGと実例から学ぶ
navitimejapan
PRO
1
240
見えないユーザの声はログに埋もれている! ~ログから具体的なユーザの体験を数値化した事例紹介~
navitimejapan
PRO
6
3k
ユーザーのためなら 『デザイン』 以外にも手を伸ばせる
navitimejapan
PRO
2
1.6k
フツーのIT女子が、 Engineering Managerになるまで
navitimejapan
PRO
3
370
不確実性に打ち勝つOKR戦略/How to manage uncertainty with OKR strategy
navitimejapan
PRO
4
3.6k
アジャイルを小さいままで 組織に広める 二周目 / Agile Transformation in NAVITIME JAPAN iteration 2
navitimejapan
PRO
4
1.3k
変更障害率0%よりも「継続的な学習と実験」を価値とする 〜障害を「起こってはならないもの」としていた組織がDirtの実施に至るまで〜 / DevOps Transformation in NAVITIME JAPAN
navitimejapan
PRO
7
5.7k
Other Decks in Technology
See All in Technology
FinOps について (ちょっと) 本気出して考えてみた
skmkzyk
0
210
「最速」で Gemini CLI を使いこなそう! 〜Cloud Shell/Cloud Run の活用〜 / The Fastest Way to Master the Gemini CLI — with Cloud Shell and Cloud Run
aoto
PRO
1
170
AI-Readyを目指した非構造化データのメダリオンアーキテクチャ
r_miura
1
290
Building a cloud native business on open source
lizrice
0
170
Azureコストと向き合った、4年半のリアル / Four and a half years of dealing with Azure costs
aeonpeople
1
260
Implementing and Evaluating a High-Level Language with WasmGC and the Wasm Component Model: Scala’s Case
tanishiking
0
170
Digitization部 紹介資料
sansan33
PRO
1
5.7k
様々なファイルシステム
sat
PRO
0
220
AI駆動で進める依存ライブラリ更新 ─ Vue プロジェクトの品質向上と開発スピード改善の実践録
sayn0
1
200
Biz職でもDifyでできる! 「触らないAIワークフロー」を実現する方法
igarashikana
3
2.7k
会社を支える Pythonという言語戦略 ~なぜPythonを主要言語にしているのか?~
curekoshimizu
3
610
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
43k
Featured
See All Featured
Facilitating Awesome Meetings
lara
57
6.6k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
36
6.1k
Leading Effective Engineering Teams in the AI Era
addyosmani
7
580
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.2k
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
Docker and Python
trallard
46
3.6k
Building Applications with DynamoDB
mza
96
6.7k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
The Invisible Side of Design
smashingmag
302
51k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Designing for Performance
lara
610
69k
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 ありがとうございました!