SlideShare a Scribd company logo
1© 2017 Rogue Wave Software, Inc. All Rights Reserved. 1
静的解析Klocwork と
Jenkins CIの連携
Masaru Horioka
Sales Engineering Manager, APAC
2© 2017 Rogue Wave Software, Inc. All Rights Reserved. 2
この文書について
• 背景
– 開発チームによって静的解析とJenkins CIとの統合に対する要件は異な
る
• Daily/nightly/weekly 解析
• コミットしたらすぐ解析
• コードレビューシステムとの統合、Continuous Delivery, など
– Klocwork にもJenkins CIと連携するためのいくつかのオプションがある
• この文書のゴール
– ユーザーがKlocworkとJenkins CI を統合する上でどのようなオプション
があるか理解する
• 異なる解析オプションの特徴
• 解析オプションを選択するための考慮事項
• 展開方法例の提供
3© 2017 Rogue Wave Software, Inc. All Rights Reserved. 3
アジェンダ
• KlocworkとJenkins CIの統合に関する質問
• Klocwork 解析オプション: 統合ビルド解析 と 継続的静的コード解析
– なぜKlocwork が継続的静的コード解析を追加したか?
• 統合ビルド解析と継続的静的コード解析 がどのように動作するか?
• 展開アプローチ
• サマリー
4© 2017 Rogue Wave Software, Inc. All Rights Reserved. 4
KlocworkとJenkins CIの統合に関する質問
• Codebase/SCM/Branch model
– 解析対象のプログラミング言語(C/C++, Java, C#)?
– codebaseの行数?
– どのようなSCMを使っているか?
– どのようなbranch model を採用しているか?
• CI/Build tools/environment
– すでに Jenkins や他の CI ツールを利用している?
– 開発者はどこでコードをコンパイルするか?デスクトップ(個人PC) or 共用ビ
ルドサーバー?
– どのブランチ(リポジトリ)が解析対象か?
– 解析の頻度は?
– どのくらいの解析時間なら許容可能か?
• Klocwork
– 保有(購入予定)のビルドライセンスの数
– 保有(購入予定) のCIライセンスの数
– デスクトップ解析の使用の有無
– 全ての指摘やメトリクス情報を含む解析結果レポートの必要性および更新頻度
(日 or 週)または新規指摘、修正件数のみで十分か?
5© 2017 Rogue Wave Software, Inc. All Rights Reserved. 5
Comparing Klocwork analysis
options
6© 2017 Rogue Wave Software, Inc. All Rights Reserved. 6
Klocwork analysis options: 統合ビルド解析 と継
続的静的コード解析
統合ビルド解析 (通常の
Klocwork 解析)
継続的静的コード解析(New in
Klocwork 2016)
利用可能な
Jenkins Plugin
Klocwork Community Plugin Klocwork Jenkins Plugins
サポート対象プ
ログラミング言
語
C/C++/Java/C# C/C++
必要なライセン
ス
Build license CI License
解析結果 全ての指摘、メトリクス等詳細情
報を含む
新規および修正件数のみ – 既存(existing)
の指摘は表示されない
解析結果の表示
方法
Klocwork Server上でソースコー
ドとともに表示
Jenkins jobのページでメッセージ及び行
番号のみ表示
Klocwork desktop上のソースコードに
メッセージをオーバーレイして表示する
ことが可能
解析スピード 通常native buildの2-5倍。差分解
析は変更が小さい場合早い
変更が小さい場合は早い。統合ビルド解
析の差分解析より早い。
7© 2017 Rogue Wave Software, Inc. All Rights Reserved. 7
統合ビルド解析と
Klocwork Community Plugin
の動作
8© 2017 Rogue Wave Software, Inc. All Rights Reserved. 8
Klocwork Community Pluginによる統合ビ
ルド解析の実行フロー
Jenkins Master
開発者
SCM: Trunk/Main branch
Jenkins Agent/
Klocwork ビルド
サーバー
Klocwork Web サーバー
1. Check-in code 2. (日
次)解析
を実行
3. Check-out
code
5. 解析結果のアップロー
ド&レポート生成 4. 解析を実行
6. Jenkins レ
ポート生成 (デー
タは Klocwork
Web サーバーか
ら取得)
9© 2017 Rogue Wave Software, Inc. All Rights Reserved. 9
Klocwork Community Plugin: Jenkins Job
ページにKlocwork Trendが表示される
10© 2017 Rogue Wave Software, Inc. All Rights Reserved. 10
Klocwork Community Plugin: Klocwork解析
結果
指摘のリンクをク
リックすると
Klocwork Web サー
バーに遷移
11© 2017 Rogue Wave Software, Inc. All Rights Reserved. 11
継続的静的コード解析 と
Klocwork Jenkins Plugin
の動作
12© 2017 Rogue Wave Software, Inc. All Rights Reserved. 12
Klocworkが 継続的静的コード解析を開発
した理由
継続的静的コード解析: アジャイル開発をスローダウンさせない静的解析
• スピードに主眼
• 利用顧客プロファイル
• Androidやインフォテイメントシステム、ネットワーク機器等、大規模C/C++
コードを開発
• 静的解析を含む様々な自動テストをJenkins CI上で実施
• 静的解析に非常に時間がかかる(例えば48時間)だと、2週間のスプリン
トに対して運用が困難
• Klocworkの詳細レポートは不要(新規不具合の混入がないことに主眼)
• その他の顧客のプロファイル
• 静的解析の早いフィードバックが必要であるが、"デスクトップ"解析の運用が困
難 (コンパイルや解析を共用ビルドマシン上で実行)
• ユースケースに応じて、統合ビルド解析、継続的静的コード解析 を選択または共用する
13© 2017 Rogue Wave Software, Inc. All Rights Reserved. 13
Klocworkが 継続的静的コード解析を開発した
理由
Slides from Robert Martin, "MULTI-STAGE-CI SYSTEM WITH JENKINS IN THE EMBEDDED WORLD":
https://www.cloudbees.com/sites/default/files/2014-0625-berlin-robert_martin-multi_stage_ci_0.pdf
継続的静的
コード解析の
ターゲット
14© 2017 Rogue Wave Software, Inc. All Rights Reserved. 14
Klocwork Jenkins Plugin による継続的静的
コード解析の実行フロー
高速差分解析により解析結果のフィードバックをより早く
Jenkins Master開発者
SCM: Trunk/Main branch OR
Feature/Personal branch before merge
Jenkins Agent/
Klocwork Jenkins
Plugin
Klocwork Web サーバー
1. Check-in code 3. 差分解
析をリク
エスト
4. Check-out
code
解析結果はアップロード
されない
5. 解析の実行
6. 差分解析レ
ポートを生成
2. commit通知(by
git hook etc)
15© 2017 Rogue Wave Software, Inc. All Rights Reserved. 15
継続的静的コード解析 with Klocwork
Jenkins Plugin
例:新しい指摘のためビルドを失敗と判断
Jenkinsビルドレポート
上に解析結果を表示
(Klocworkサーバー上
には解析結果は表示され
ない. Editボタンを押す
とJenkinsレポート上で
コメント入力や選別が可
能。
16© 2017 Rogue Wave Software, Inc. All Rights Reserved. 16
継続的静的コード解析 with Klocwork
Jenkins Plugin
例:指摘情報の選別
17© 2017 Rogue Wave Software, Inc. All Rights Reserved. 17
継続的静的コード解析 with Klocwork
Jenkins Plugin
例:指摘が修正されれビルド成功と判断
18© 2017 Rogue Wave Software, Inc. All Rights Reserved. 18
ユースケース: 統合ビルド解析とContinuous SCA の共用
C/I C/I C/I C/I C/I C/I
SCM: Trunk
Jenkins ジョ
ブ:
Continuous
SCA
Jenkins ジョブ:
統合ビルド解析
開発者
9am 6pm 0am
コミット毎にContinuous
SCA を実行しすばやく
フィードバック
夜間に統合ビルド解
析を実行し詳細レ
ポートを生成
Developer A Developer B Developer C
Jenkins job fails if new issues introduced
19© 2017 Rogue Wave Software, Inc. All Rights Reserved. 19
推奨される展開アプローチ
Level 3: カスタム統合 / Continuous Delivery
code reviewとの統合, Multi stage CI, continuous delivery, など
Level 2: 継続的静的コード解析の展開
対象: trunk/master/release向けだけではなく、
機能、個人用ブランチ
ゴール:変更による不具合の混入の早期発見
Level 1: 統合ビルド解析を自動化
対象: trunk/master/release向け等寿命の長
いブランチ
ゴール: 解析を自動化し品質を測る化、見え
る化
20© 2017 Rogue Wave Software, Inc. All Rights Reserved. 20
サマリー
• 2種類のKlocwork 解析オプションとJenkinsプラグイン:
– Klocwork Community Plugin による統合ビルド解析
• 夜間、週次解析の自動化により測る化、見える化
• 継続的静的コード解析のベースラインの作成
– Klocwork Jenkins Plugin による継続的静的コード解析
• 大規模C/C++ codebase
• コミット毎の解析
• 統合ビルド解析よりも軽量で早いフィードバック
• ユースーケースに応じて、一方または両方を活用
21© 2017 Rogue Wave Software, Inc. All Rights Reserved. 21
Klocwork Community Plugin とKlocwork
Jenkins Pluginの比較
Klocwork Community
Plugin
Klocwork Jenkins
Plugin
Created/Supported by OSS(Emenda社が主導) Rogue Wave
Analysis option
supported
統合ビルド解析 継続的静的コード解析
Klocwork license
required
Build license CI license
Klocwork コマンドが
Pluginに含まれるか?
No (Pluginとは別に
Klocworkのinstallが必要
)
Yes (PluginにKlocwork
コマンドが含まれる)
22© 2017 Rogue Wave Software, Inc. All Rights Reserved. 22
参考:継続的静的コード解析の展開におけ
る考慮事項
• 継続的静的コード解析 を実行するには初回の "baseline" 解析が必要にな
ります。.Klocwork Pluginは初回解析以降に追加されたコードに対して、
差分解析をおこない新規指摘のみを報告します。
– https://support.roguewave.com/documentation/klocwork/jp/current/int
egratingwithjenkins/
• 継続的静的コード解析 は差分解析実行のために、 Klocwork tables dataを
使用します。差分解析を行うためには、常に同じJenkins Slave上で解析
をおこなうか、table dataを複数のJenkins Slave上で共有する仕組みを別
に作る必要があります。
23© 2017 Rogue Wave Software, Inc. All Rights Reserved. 23
参考文献
• Klocwork Community Plugin
– https://wiki.jenkins-
ci.org/display/JENKINS/Klocwork+Community+Plugin
• Klocwork Jenkins Plugin
– https://support.roguewave.com/documentation/klocwork/jp/current/se
ttingupjenkins/
• Robert Martin, "MULTI-STAGE-CI SYSTEM WITH JENKINS IN THE
EMBEDDED WORLD":
– https://www.cloudbees.com/sites/default/files/2014-0625-berlin-
robert_martin-multi_stage_ci_0.pdf
24© 2017 Rogue Wave Software, Inc. All Rights Reserved. 24

More Related Content

What's hot

シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
NTT DATA Technology & Innovation
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
泰 増田
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo!デベロッパーネットワーク
 
Serverless時代のJavaについて
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについて
Amazon Web Services Japan
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
 
今から始めるUbuntu入門_202307.pdf
今から始めるUbuntu入門_202307.pdf今から始めるUbuntu入門_202307.pdf
今から始めるUbuntu入門_202307.pdf
富士通クラウドテクノロジーズ株式会社
 
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリングMicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
LINE Corporation
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
Yoshifumi Kawai
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
onozaty
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
Takanori Suzuki
 
Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門
tsukasamannen
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
Kota Saito
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
 
PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門
Uptime Technologies LLC (JP)
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
disc99_
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
NTT DATA Technology & Innovation
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Masahito Zembutsu
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
NTT DATA Technology & Innovation
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情
Masahiro Tomita
 

What's hot (20)

シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのかシリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
 
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
より速く より運用しやすく 進化し続けるJVM(Java Developers Summit Online 2023 発表資料)
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
Yahoo! JAPANのコンテンツプラットフォームを支えるSpring Cloud Streamによるマイクロサービスアーキテクチャ #jsug #sf_52
 
Serverless時代のJavaについて
Serverless時代のJavaについてServerless時代のJavaについて
Serverless時代のJavaについて
 
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
 
今から始めるUbuntu入門_202307.pdf
今から始めるUbuntu入門_202307.pdf今から始めるUbuntu入門_202307.pdf
今から始めるUbuntu入門_202307.pdf
 
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリングMicrometerとPrometheusによる LINEファミリーアプリのモニタリング
MicrometerとPrometheusによる LINEファミリーアプリのモニタリング
 
The Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnionThe Usage and Patterns of MagicOnion
The Usage and Patterns of MagicOnion
 
40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること40歳過ぎてもエンジニアでいるためにやっていること
40歳過ぎてもエンジニアでいるためにやっていること
 
人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate人生がときめくAPIテスト自動化 with Karate
人生がときめくAPIテスト自動化 with Karate
 
Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門Spring Boot ユーザの方のための Quarkus 入門
Spring Boot ユーザの方のための Quarkus 入門
 
こわくない Git
こわくない Gitこわくない Git
こわくない Git
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門PostgreSQLアーキテクチャ入門
PostgreSQLアーキテクチャ入門
 
マイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPCマイクロサービスバックエンドAPIのためのRESTとgRPC
マイクロサービスバックエンドAPIのためのRESTとgRPC
 
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
 
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
 
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
Kubernetesでの性能解析 ~なんとなく遅いからの脱却~(Kubernetes Meetup Tokyo #33 発表資料)
 
MySQLの文字コード事情
MySQLの文字コード事情MySQLの文字コード事情
MySQLの文字コード事情
 

Similar to 静的解析Klocwork とJenkins CIの連携

Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要
Masaru Horioka
 
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
近藤 繁延
 
Jenkinsstudy#4kokawa
Jenkinsstudy#4kokawaJenkinsstudy#4kokawa
Jenkinsstudy#4kokawa
Takashi Kokawa
 
静的解析ツールKlocwork によるCERT-C/CWE対応
静的解析ツールKlocwork によるCERT-C/CWE対応静的解析ツールKlocwork によるCERT-C/CWE対応
静的解析ツールKlocwork によるCERT-C/CWE対応
Masaru Horioka
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
Yu Nobuoka
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
Manabu Shimobe
 
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Takashi Kanai
 
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみた
You&I
 
C#のコード解析ってなんだ@20160825 CenterCLR.学生 #1
C#のコード解析ってなんだ@20160825 CenterCLR.学生 #1C#のコード解析ってなんだ@20160825 CenterCLR.学生 #1
C#のコード解析ってなんだ@20160825 CenterCLR.学生 #1
MasuqaT
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
Shinichiro Takezaki
 
Amazon ECSとDevOps
Amazon ECSとDevOpsAmazon ECSとDevOps
Amazon ECSとDevOps
Amazon Web Services Japan
 
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
Masaya Aoyama
 
dstn交流会_data_spider 3.0最新情報とデモ
dstn交流会_data_spider 3.0最新情報とデモdstn交流会_data_spider 3.0最新情報とデモ
dstn交流会_data_spider 3.0最新情報とデモdstn
 
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
Takehara Ryo
 
OpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみたOpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみた徹 上野山
 
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
Kouji Matsui
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
Narami Kiyokura
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShiftEtsuji Nakai
 
Amazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep diveAmazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep dive
Amazon Web Services Japan
 
Klocwork 2017.0アップデート
Klocwork 2017.0アップデートKlocwork 2017.0アップデート
Klocwork 2017.0アップデート
Masaru Horioka
 

Similar to 静的解析Klocwork とJenkins CIの連携 (20)

Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要
 
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
 
Jenkinsstudy#4kokawa
Jenkinsstudy#4kokawaJenkinsstudy#4kokawa
Jenkinsstudy#4kokawa
 
静的解析ツールKlocwork によるCERT-C/CWE対応
静的解析ツールKlocwork によるCERT-C/CWE対応静的解析ツールKlocwork によるCERT-C/CWE対応
静的解析ツールKlocwork によるCERT-C/CWE対応
 
はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入はてなにおける継続的デプロイメントの現状と Docker の導入
はてなにおける継続的デプロイメントの現状と Docker の導入
 
Voicepic@FukuiMASeminar
Voicepic@FukuiMASeminarVoicepic@FukuiMASeminar
Voicepic@FukuiMASeminar
 
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
Kubernetes上のWindows Server コンテナーのマイクロサービス間分離
 
IBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみたIBM Rational Team Concertに触れてみた
IBM Rational Team Concertに触れてみた
 
C#のコード解析ってなんだ@20160825 CenterCLR.学生 #1
C#のコード解析ってなんだ@20160825 CenterCLR.学生 #1C#のコード解析ってなんだ@20160825 CenterCLR.学生 #1
C#のコード解析ってなんだ@20160825 CenterCLR.学生 #1
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
Amazon ECSとDevOps
Amazon ECSとDevOpsAmazon ECSとDevOps
Amazon ECSとDevOps
 
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
 
dstn交流会_data_spider 3.0最新情報とデモ
dstn交流会_data_spider 3.0最新情報とデモdstn交流会_data_spider 3.0最新情報とデモ
dstn交流会_data_spider 3.0最新情報とデモ
 
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
 
OpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみたOpenCVをAndroidで動かしてみた
OpenCVをAndroidで動かしてみた
 
.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み.NET Coreから概観する.NETのOSSへの取り組み
.NET Coreから概観する.NETのOSSへの取り組み
 
Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門Visual Studioで始めるTypeScript開発入門
Visual Studioで始めるTypeScript開発入門
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
 
Amazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep diveAmazon EC2 Container Service Deep dive
Amazon EC2 Container Service Deep dive
 
Klocwork 2017.0アップデート
Klocwork 2017.0アップデートKlocwork 2017.0アップデート
Klocwork 2017.0アップデート
 

More from Masaru Horioka

JetBrainsライセンス購入方法
JetBrainsライセンス購入方法JetBrainsライセンス購入方法
JetBrainsライセンス購入方法
Masaru Horioka
 
Klocwork 2018.0 アップデート
Klocwork 2018.0 アップデートKlocwork 2018.0 アップデート
Klocwork 2018.0 アップデート
Masaru Horioka
 
Klocwork 2017.1アップデート
Klocwork 2017.1アップデートKlocwork 2017.1アップデート
Klocwork 2017.1アップデート
Masaru Horioka
 
Klocwork カスタムチェッカー紹介
Klocwork カスタムチェッカー紹介Klocwork カスタムチェッカー紹介
Klocwork カスタムチェッカー紹介
Masaru Horioka
 
Klocworkバージョン11.2アップデート
Klocworkバージョン11.2アップデートKlocworkバージョン11.2アップデート
Klocworkバージョン11.2アップデート
Masaru Horioka
 
静的解析ツール Klocworkによる 機能安全規格への対応
静的解析ツール Klocworkによる 機能安全規格への対応静的解析ツール Klocworkによる 機能安全規格への対応
静的解析ツール Klocworkによる 機能安全規格への対応
Masaru Horioka
 
Mentoring
MentoringMentoring
Mentoring
Masaru Horioka
 
静的解析のROI
静的解析のROI静的解析のROI
静的解析のROI
Masaru Horioka
 

More from Masaru Horioka (8)

JetBrainsライセンス購入方法
JetBrainsライセンス購入方法JetBrainsライセンス購入方法
JetBrainsライセンス購入方法
 
Klocwork 2018.0 アップデート
Klocwork 2018.0 アップデートKlocwork 2018.0 アップデート
Klocwork 2018.0 アップデート
 
Klocwork 2017.1アップデート
Klocwork 2017.1アップデートKlocwork 2017.1アップデート
Klocwork 2017.1アップデート
 
Klocwork カスタムチェッカー紹介
Klocwork カスタムチェッカー紹介Klocwork カスタムチェッカー紹介
Klocwork カスタムチェッカー紹介
 
Klocworkバージョン11.2アップデート
Klocworkバージョン11.2アップデートKlocworkバージョン11.2アップデート
Klocworkバージョン11.2アップデート
 
静的解析ツール Klocworkによる 機能安全規格への対応
静的解析ツール Klocworkによる 機能安全規格への対応静的解析ツール Klocworkによる 機能安全規格への対応
静的解析ツール Klocworkによる 機能安全規格への対応
 
Mentoring
MentoringMentoring
Mentoring
 
静的解析のROI
静的解析のROI静的解析のROI
静的解析のROI
 

Recently uploaded

FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
fisuda
 
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
Yoshitaka Kawashima
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
yamamotominami
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
You&I
 
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
ooishi1
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
You&I
 

Recently uploaded (7)

FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
FIWARE Orion Context Broker コンテキスト情報管理 (Orion 4.0.0対応)
 
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」BitVisor Summit 10「3. Thin Hypervisor on AArch64」
BitVisor Summit 10「3. Thin Hypervisor on AArch64」
 
Grokking Simplicity探訪
Grokking Simplicity探訪Grokking Simplicity探訪
Grokking Simplicity探訪
 
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdfCO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
CO2排出量見える化・削減・報告クラウド「アスエネ」サービス紹介_Saleshub.pdf
 
NIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしようNIST Cybersecurity Framework 2.0の変更点整理をしよう
NIST Cybersecurity Framework 2.0の変更点整理をしよう
 
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
受発注バスターズ説明資料  株式会社batton Saleshub掲載用.pdf
 
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
アジャイルの30年(Tree Decades of Agileというブログ記事に関する要約)
 

静的解析Klocwork とJenkins CIの連携

  • 1. 1© 2017 Rogue Wave Software, Inc. All Rights Reserved. 1 静的解析Klocwork と Jenkins CIの連携 Masaru Horioka Sales Engineering Manager, APAC
  • 2. 2© 2017 Rogue Wave Software, Inc. All Rights Reserved. 2 この文書について • 背景 – 開発チームによって静的解析とJenkins CIとの統合に対する要件は異な る • Daily/nightly/weekly 解析 • コミットしたらすぐ解析 • コードレビューシステムとの統合、Continuous Delivery, など – Klocwork にもJenkins CIと連携するためのいくつかのオプションがある • この文書のゴール – ユーザーがKlocworkとJenkins CI を統合する上でどのようなオプション があるか理解する • 異なる解析オプションの特徴 • 解析オプションを選択するための考慮事項 • 展開方法例の提供
  • 3. 3© 2017 Rogue Wave Software, Inc. All Rights Reserved. 3 アジェンダ • KlocworkとJenkins CIの統合に関する質問 • Klocwork 解析オプション: 統合ビルド解析 と 継続的静的コード解析 – なぜKlocwork が継続的静的コード解析を追加したか? • 統合ビルド解析と継続的静的コード解析 がどのように動作するか? • 展開アプローチ • サマリー
  • 4. 4© 2017 Rogue Wave Software, Inc. All Rights Reserved. 4 KlocworkとJenkins CIの統合に関する質問 • Codebase/SCM/Branch model – 解析対象のプログラミング言語(C/C++, Java, C#)? – codebaseの行数? – どのようなSCMを使っているか? – どのようなbranch model を採用しているか? • CI/Build tools/environment – すでに Jenkins や他の CI ツールを利用している? – 開発者はどこでコードをコンパイルするか?デスクトップ(個人PC) or 共用ビ ルドサーバー? – どのブランチ(リポジトリ)が解析対象か? – 解析の頻度は? – どのくらいの解析時間なら許容可能か? • Klocwork – 保有(購入予定)のビルドライセンスの数 – 保有(購入予定) のCIライセンスの数 – デスクトップ解析の使用の有無 – 全ての指摘やメトリクス情報を含む解析結果レポートの必要性および更新頻度 (日 or 週)または新規指摘、修正件数のみで十分か?
  • 5. 5© 2017 Rogue Wave Software, Inc. All Rights Reserved. 5 Comparing Klocwork analysis options
  • 6. 6© 2017 Rogue Wave Software, Inc. All Rights Reserved. 6 Klocwork analysis options: 統合ビルド解析 と継 続的静的コード解析 統合ビルド解析 (通常の Klocwork 解析) 継続的静的コード解析(New in Klocwork 2016) 利用可能な Jenkins Plugin Klocwork Community Plugin Klocwork Jenkins Plugins サポート対象プ ログラミング言 語 C/C++/Java/C# C/C++ 必要なライセン ス Build license CI License 解析結果 全ての指摘、メトリクス等詳細情 報を含む 新規および修正件数のみ – 既存(existing) の指摘は表示されない 解析結果の表示 方法 Klocwork Server上でソースコー ドとともに表示 Jenkins jobのページでメッセージ及び行 番号のみ表示 Klocwork desktop上のソースコードに メッセージをオーバーレイして表示する ことが可能 解析スピード 通常native buildの2-5倍。差分解 析は変更が小さい場合早い 変更が小さい場合は早い。統合ビルド解 析の差分解析より早い。
  • 7. 7© 2017 Rogue Wave Software, Inc. All Rights Reserved. 7 統合ビルド解析と Klocwork Community Plugin の動作
  • 8. 8© 2017 Rogue Wave Software, Inc. All Rights Reserved. 8 Klocwork Community Pluginによる統合ビ ルド解析の実行フロー Jenkins Master 開発者 SCM: Trunk/Main branch Jenkins Agent/ Klocwork ビルド サーバー Klocwork Web サーバー 1. Check-in code 2. (日 次)解析 を実行 3. Check-out code 5. 解析結果のアップロー ド&レポート生成 4. 解析を実行 6. Jenkins レ ポート生成 (デー タは Klocwork Web サーバーか ら取得)
  • 9. 9© 2017 Rogue Wave Software, Inc. All Rights Reserved. 9 Klocwork Community Plugin: Jenkins Job ページにKlocwork Trendが表示される
  • 10. 10© 2017 Rogue Wave Software, Inc. All Rights Reserved. 10 Klocwork Community Plugin: Klocwork解析 結果 指摘のリンクをク リックすると Klocwork Web サー バーに遷移
  • 11. 11© 2017 Rogue Wave Software, Inc. All Rights Reserved. 11 継続的静的コード解析 と Klocwork Jenkins Plugin の動作
  • 12. 12© 2017 Rogue Wave Software, Inc. All Rights Reserved. 12 Klocworkが 継続的静的コード解析を開発 した理由 継続的静的コード解析: アジャイル開発をスローダウンさせない静的解析 • スピードに主眼 • 利用顧客プロファイル • Androidやインフォテイメントシステム、ネットワーク機器等、大規模C/C++ コードを開発 • 静的解析を含む様々な自動テストをJenkins CI上で実施 • 静的解析に非常に時間がかかる(例えば48時間)だと、2週間のスプリン トに対して運用が困難 • Klocworkの詳細レポートは不要(新規不具合の混入がないことに主眼) • その他の顧客のプロファイル • 静的解析の早いフィードバックが必要であるが、"デスクトップ"解析の運用が困 難 (コンパイルや解析を共用ビルドマシン上で実行) • ユースケースに応じて、統合ビルド解析、継続的静的コード解析 を選択または共用する
  • 13. 13© 2017 Rogue Wave Software, Inc. All Rights Reserved. 13 Klocworkが 継続的静的コード解析を開発した 理由 Slides from Robert Martin, "MULTI-STAGE-CI SYSTEM WITH JENKINS IN THE EMBEDDED WORLD": https://www.cloudbees.com/sites/default/files/2014-0625-berlin-robert_martin-multi_stage_ci_0.pdf 継続的静的 コード解析の ターゲット
  • 14. 14© 2017 Rogue Wave Software, Inc. All Rights Reserved. 14 Klocwork Jenkins Plugin による継続的静的 コード解析の実行フロー 高速差分解析により解析結果のフィードバックをより早く Jenkins Master開発者 SCM: Trunk/Main branch OR Feature/Personal branch before merge Jenkins Agent/ Klocwork Jenkins Plugin Klocwork Web サーバー 1. Check-in code 3. 差分解 析をリク エスト 4. Check-out code 解析結果はアップロード されない 5. 解析の実行 6. 差分解析レ ポートを生成 2. commit通知(by git hook etc)
  • 15. 15© 2017 Rogue Wave Software, Inc. All Rights Reserved. 15 継続的静的コード解析 with Klocwork Jenkins Plugin 例:新しい指摘のためビルドを失敗と判断 Jenkinsビルドレポート 上に解析結果を表示 (Klocworkサーバー上 には解析結果は表示され ない. Editボタンを押す とJenkinsレポート上で コメント入力や選別が可 能。
  • 16. 16© 2017 Rogue Wave Software, Inc. All Rights Reserved. 16 継続的静的コード解析 with Klocwork Jenkins Plugin 例:指摘情報の選別
  • 17. 17© 2017 Rogue Wave Software, Inc. All Rights Reserved. 17 継続的静的コード解析 with Klocwork Jenkins Plugin 例:指摘が修正されれビルド成功と判断
  • 18. 18© 2017 Rogue Wave Software, Inc. All Rights Reserved. 18 ユースケース: 統合ビルド解析とContinuous SCA の共用 C/I C/I C/I C/I C/I C/I SCM: Trunk Jenkins ジョ ブ: Continuous SCA Jenkins ジョブ: 統合ビルド解析 開発者 9am 6pm 0am コミット毎にContinuous SCA を実行しすばやく フィードバック 夜間に統合ビルド解 析を実行し詳細レ ポートを生成 Developer A Developer B Developer C Jenkins job fails if new issues introduced
  • 19. 19© 2017 Rogue Wave Software, Inc. All Rights Reserved. 19 推奨される展開アプローチ Level 3: カスタム統合 / Continuous Delivery code reviewとの統合, Multi stage CI, continuous delivery, など Level 2: 継続的静的コード解析の展開 対象: trunk/master/release向けだけではなく、 機能、個人用ブランチ ゴール:変更による不具合の混入の早期発見 Level 1: 統合ビルド解析を自動化 対象: trunk/master/release向け等寿命の長 いブランチ ゴール: 解析を自動化し品質を測る化、見え る化
  • 20. 20© 2017 Rogue Wave Software, Inc. All Rights Reserved. 20 サマリー • 2種類のKlocwork 解析オプションとJenkinsプラグイン: – Klocwork Community Plugin による統合ビルド解析 • 夜間、週次解析の自動化により測る化、見える化 • 継続的静的コード解析のベースラインの作成 – Klocwork Jenkins Plugin による継続的静的コード解析 • 大規模C/C++ codebase • コミット毎の解析 • 統合ビルド解析よりも軽量で早いフィードバック • ユースーケースに応じて、一方または両方を活用
  • 21. 21© 2017 Rogue Wave Software, Inc. All Rights Reserved. 21 Klocwork Community Plugin とKlocwork Jenkins Pluginの比較 Klocwork Community Plugin Klocwork Jenkins Plugin Created/Supported by OSS(Emenda社が主導) Rogue Wave Analysis option supported 統合ビルド解析 継続的静的コード解析 Klocwork license required Build license CI license Klocwork コマンドが Pluginに含まれるか? No (Pluginとは別に Klocworkのinstallが必要 ) Yes (PluginにKlocwork コマンドが含まれる)
  • 22. 22© 2017 Rogue Wave Software, Inc. All Rights Reserved. 22 参考:継続的静的コード解析の展開におけ る考慮事項 • 継続的静的コード解析 を実行するには初回の "baseline" 解析が必要にな ります。.Klocwork Pluginは初回解析以降に追加されたコードに対して、 差分解析をおこない新規指摘のみを報告します。 – https://support.roguewave.com/documentation/klocwork/jp/current/int egratingwithjenkins/ • 継続的静的コード解析 は差分解析実行のために、 Klocwork tables dataを 使用します。差分解析を行うためには、常に同じJenkins Slave上で解析 をおこなうか、table dataを複数のJenkins Slave上で共有する仕組みを別 に作る必要があります。
  • 23. 23© 2017 Rogue Wave Software, Inc. All Rights Reserved. 23 参考文献 • Klocwork Community Plugin – https://wiki.jenkins- ci.org/display/JENKINS/Klocwork+Community+Plugin • Klocwork Jenkins Plugin – https://support.roguewave.com/documentation/klocwork/jp/current/se ttingupjenkins/ • Robert Martin, "MULTI-STAGE-CI SYSTEM WITH JENKINS IN THE EMBEDDED WORLD": – https://www.cloudbees.com/sites/default/files/2014-0625-berlin- robert_martin-multi_stage_ci_0.pdf
  • 24. 24© 2017 Rogue Wave Software, Inc. All Rights Reserved. 24