Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
CONFIDENTIAL ©NAVITIME JAPAN Sonar for Bitbucketを 試してみた ~全チームのコード品質をあげるために~ 株式会社ナビタイムジャパン 佐藤 裕也
Slide 2
Slide 2 text
CONFIDENTIAL ©NAVITIME JAPAN 佐藤 裕也 ツール導入 / 運用 / サポート グロースハック アジャイル推進
Slide 3
Slide 3 text
CONFIDENTIAL ©NAVITIME JAPAN こんなことありませんか?
Slide 4
Slide 4 text
CONFIDENTIAL ©NAVITIME JAPAN こんなことありませんか? レビューでの指摘が大変 ex)コード重複、nullチェック 1か月後…. 静的解析ツールを導入してみたけど 使わなくなった
Slide 5
Slide 5 text
CONFIDENTIAL ©NAVITIME JAPAN こんなことありませんか? レビューでの指摘が大変 ex)コード重複、nullチェック 1か月後…. 静的解析ツールを導入してみたけど 使わなくなった Sonar for Bitbucket が 解決してくれます
Slide 6
Slide 6 text
CONFIDENTIAL ©NAVITIME JAPAN アジェンダ • Sonar for Bitbucketとは? • 何故導入しようと考えたのか? • 試してみる • システム構成 • (超えていない)3つの壁 • パイロットでやってみて • まとめ
Slide 7
Slide 7 text
Sonar for Bitbucketとは
Slide 8
Slide 8 text
CONFIDENTIAL ©NAVITIME JAPAN Sonar とは 静的解析ツールです。 コード品質の可視化やバグを誘発しそうなコードの指摘等を行ってくれます。
Slide 9
Slide 9 text
CONFIDENTIAL ©NAVITIME JAPAN Sonar とは 静的解析ツールです。 コード品質の可視化やバグを誘発しそうなコードの指摘等を行ってくれます。 バグ/障害の防止 リファクタリング目標の数値化 エンジニアのモチベーション向上
Slide 10
Slide 10 text
CONFIDENTIAL ©NAVITIME JAPAN Sonar for Bitbucket とは Sonarの結果をBitbucketに表示させるプラグインです。
Slide 11
Slide 11 text
何故導入しようとしたのか
Slide 12
Slide 12 text
CONFIDENTIAL ©NAVITIME JAPAN 導入理由その1 全社的に品質を上げたい リファクタ したいな でも効果が みえにくいな… また ヒアリハット!! レビュー多い…
Slide 13
Slide 13 text
CONFIDENTIAL ©NAVITIME JAPAN 導入理由その1 Sonar をみんなに使ってもらえば解決できそうだが….
Slide 14
Slide 14 text
CONFIDENTIAL ©NAVITIME JAPAN 導入理由その2 Sonarを導入しても廃れる懸念が... 1か月後….
Slide 15
Slide 15 text
CONFIDENTIAL ©NAVITIME JAPAN 導入理由その2 こんなものがあれば….
Slide 16
Slide 16 text
CONFIDENTIAL ©NAVITIME JAPAN 導入理由 そう、Sonar for Bitbucketです
Slide 17
Slide 17 text
試してみる
Slide 18
Slide 18 text
CONFIDENTIAL ©NAVITIME JAPAN 簡易システム構成 ①フック ②実行 ③解析結果 Bamboo等、 よく使うCIツールでOK 自前で用意 Sonar for Bitbcuket公式サイト 推奨のプラグイン
Slide 19
Slide 19 text
CONFIDENTIAL ©NAVITIME JAPAN 3つの壁 Jenkinsにパラメータが渡らない クローンURLを冗長化できない SonarとBitbucketの権限を同期できない
Slide 20
Slide 20 text
CONFIDENTIAL ©NAVITIME JAPAN 3つの壁 Jenkinsにパラメータが渡らない クローンURLを冗長化できない SonarとBitbucketの権限を同期できない
Slide 21
Slide 21 text
CONFIDENTIAL ©NAVITIME JAPAN Jenkinsにパラメータが渡らない ①フック ②実行 ③解析結果
Slide 22
Slide 22 text
CONFIDENTIAL ©NAVITIME JAPAN Jenkinsにパラメータが渡らない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA リポジトリB リポジトリC
Slide 23
Slide 23 text
CONFIDENTIAL ©NAVITIME JAPAN Jenkinsにパラメータが渡らない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA リポジトリB リポジトリC ・プロジェクトキー ・リポジトリキー ・ブランチ名
Slide 24
Slide 24 text
CONFIDENTIAL ©NAVITIME JAPAN Jenkinsにパラメータが渡らない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA リポジトリB リポジトリC ・プロジェクトキー ・リポジトリキー ・ブランチ名
Slide 25
Slide 25 text
CONFIDENTIAL ©NAVITIME JAPAN Jenkinsにパラメータが渡らない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA リポジトリB リポジトリC Sonar 実行ジョブ Sonar 実行ジョブ
Slide 26
Slide 26 text
CONFIDENTIAL ©NAVITIME JAPAN 3つの壁 Jenkinsにパラメータが渡らない クローンURLを冗長化できない SonarとBitbucketの権限を同期できない
Slide 27
Slide 27 text
CONFIDENTIAL ©NAVITIME JAPAN クローンURLを冗長化できない ①フック ②実行 ③解析結果
Slide 28
Slide 28 text
CONFIDENTIAL ©NAVITIME JAPAN クローンURLを冗長化できない ①フック ②実行 ③解析結果 ①’取得 厳密には…
Slide 29
Slide 29 text
CONFIDENTIAL ©NAVITIME JAPAN ①’取得 クローンURLを冗長化できない ①フック ②実行 ③解析結果 厳密には…
Slide 30
Slide 30 text
CONFIDENTIAL ©NAVITIME JAPAN Jenkinsにパラメータが渡らない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA リポジトリB リポジトリC ①’取得 ①’取得 ①’取得
Slide 31
Slide 31 text
CONFIDENTIAL ©NAVITIME JAPAN Jenkinsにパラメータが渡らない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA リポジトリB リポジトリC ①’取得 ①’取得 ①’取得 ①フック ②実行
Slide 32
Slide 32 text
CONFIDENTIAL ©NAVITIME JAPAN ①’取得 ①’取得 ①’取得 Jenkinsにパラメータが渡らない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA リポジトリB リポジトリC
Slide 33
Slide 33 text
CONFIDENTIAL ©NAVITIME JAPAN クローンURLを冗長化できない Sonar 実行ジョブ リポジトリA リポジトリB リポジトリC リポジトリA リポジトリB リポジトリC Sonar 実行ジョブ Sonar 実行ジョブ ①’取得 ①’取得 ①’取得
Slide 34
Slide 34 text
CONFIDENTIAL ©NAVITIME JAPAN 3つの壁 今お話しした2つの壁、昨日乗り越えました!
Slide 35
Slide 35 text
CONFIDENTIAL ©NAVITIME JAPAN 昨日乗り越えた壁 ①フック ②実行 ③解析結果
Slide 36
Slide 36 text
CONFIDENTIAL ©NAVITIME JAPAN 昨日乗り越えた壁 ②実行 ③解析結果 ①フック
Slide 37
Slide 37 text
CONFIDENTIAL ©NAVITIME JAPAN 昨日乗り越えた壁 Sonar 実行 ジョブ リポジトリA リポジトリB リポジトリC リポジトリA リポジトリB リポジトリC ・プロジェクトキー ・リポジトリキー ・ブランチ名 自作 スクリプト payloadを解析 デフォルトの 機能でフック
Slide 38
Slide 38 text
CONFIDENTIAL ©NAVITIME JAPAN 3つの壁 Jenkinsにパラメータが渡らない クローンURLを冗長化できない SonarとBitbucketの権限を同期できない
Slide 39
Slide 39 text
CONFIDENTIAL ©NAVITIME JAPAN SonarとBitbucketの権限を同期できない
Slide 40
Slide 40 text
CONFIDENTIAL ©NAVITIME JAPAN SonarとBitbucketの権限を同期できない read read
Slide 41
Slide 41 text
CONFIDENTIAL ©NAVITIME JAPAN SonarとBitbucketの権限を同期できない read read
Slide 42
Slide 42 text
CONFIDENTIAL ©NAVITIME JAPAN SonarとBitbucketの権限を同期できない read read まずは閲覧制限のないリポジトリのみ
Slide 43
Slide 43 text
CONFIDENTIAL ©NAVITIME JAPAN 壁を乗り越えて...
Slide 44
Slide 44 text
CONFIDENTIAL ©NAVITIME JAPAN 解析サマリの表示
Slide 45
Slide 45 text
CONFIDENTIAL ©NAVITIME JAPAN プルリクの解析(Sonarのdeveloper editionが必用)
Slide 46
Slide 46 text
パイロットでやってみて
Slide 47
Slide 47 text
CONFIDENTIAL ©NAVITIME JAPAN パイロットでやってみて 早く本格導入して欲しいという声がちらほら Sonarの活用方法をまとめる必要あり →何か表示されているで終わってしまう
Slide 48
Slide 48 text
CONFIDENTIAL ©NAVITIME JAPAN まとめ • Sonar for Bitbucketではコード品質をBitbucket上に可視化できる • コード品質を可視化できると工数削減やモチベーションアップなど様々 なメリットがある • 乗り越えるべき壁はまだある • 運用の簡略化(jenkinsへのパラメータ渡し、クローンURLの冗長化) • Sonar活用方法の展開
Slide 49
Slide 49 text
CONFIDENTIAL ©NAVITIME JAPAN ありがとうございました!