コピペ管理ツール

CloneTracker
ご紹介資料

株式会社Fixstars

目次
●

会社概要
○

●

製品説明
○
○
○
○
○
○
○
○
○
○

●

基本情報
CloneTrackerは誰のためのツール？？
CloneTrackerとは？？
CloneTrackerはどう使う？？
対象言語、動作環境
CloneTrackerの特徴
コピペコード検出手法
コピペコードの重要度判定パラメータ
初回の解析時間
セキュリティ
価格体系

Appendix
○SNS

会社概要
Company Overview

基本情報
会社名

株式会社フィックスターズ

本社所在地

東京都港区芝浦3-1-1 msb Tamachi
田町ステーションタワーN 28階

設立

2002年8月

上場区分

東証プライム（証券コード：3687）

代表取締役社長

三木

資本金5億5,446万円

社員数（連結）292名（2023年9月現在）
キオクシア株式会社
ルネサスエレクトロニクス株式会社

主なお客様

トヨタグループ（トヨタ自動車株式会社・豊田通商株式会社・株式会社デンソー）
みずほ証券株式会社聡

キヤノン株式会社

グループ会社
Fixstars Solutions, Inc.

(株)Fixstars Autonomous Technologies(株)Fixstars Amplify

連結子会社
米国での営業及び開発を担当

株式会社ネクスティ エレクトロニクスとのJV
自動運転向けソフトウェアを開発

連結子会社
量子コンピューティングのクラウド事業を運営(株)Smart Opinion

オスカーテクノロジー(株)(株)Drone Autopilot Lab(株)Fixstars Investment

連結子会社
乳がんAI画像診断支援事業を運営

連結子会社
ソフトウェア自動並列化サービスを提供

連結子会社

連結子会社

ドローン自動運転の開発と実証実験を推進

ディープテックスタートアップ企業への投資・事業支援

4

製品説明
Product Description

CloneTrackerは誰のためのツール？？
コピペコードの検出、管理、変更忘れ（バグ）の特定をしたい
PL（※）、または、エンジニア向けのツールです。
具体的には、●●●●

大規模なシステム開発プロジェクトのPL、エンジニア
既存システムの追加開発や保守を専門にする開発チームのPL、エンジニア外部パートナーや派遣社員など、エンジニアの入れ替わりが多発するシステム開発プロ
ジェクトのPL、エンジニア
後継機開発のため、既存製品のコードをよく流用する開発プロジェクトのPL、エンジニア※ここでいうPLとは、コードレビューを行う方を想定しています。

6

CloneTrackerとは？？
エンジニアに代わって、コピペコードを検出・追跡・管理するツールです。
コピペコードを検出・管理し、変更忘れ（バグ）の危険性が高いコピペコードを検出したら、解析結果にて上位表示します。
●●

スパゲッティコードなのに仕様変更が多発する
リファクタリングする時間も人員もない

そんな開発現場に寄り添った、実務で使いやすいツールです。

7

CloneTrackerはどう使う？？
コピペコードを管理したいディレクトリを、CloneTrackerの管理対象ディレクトリに登録していただくだけでご利用できます。
登録後、解析が適宜自動実行（※）されます。
新規コピペコードとバグの可能性があるコピペコードが検出されると、CloneTrackerはユーザーにプッシュ通知します。
アプリ画面にて解析結果をご覧ください。
※ 任意のタイミングで手動解析も行えます。

解析結果一覧画面イメージ

OpenSSL8

CloneTrackerはどう使う？？
【ご利用の流れ】

10分おきの定時解析をスタート初回解析

プロジェクト登録

プッシュ通知一覧画面で解析結果を確認

詳細画面でコピペコードを確認

9対象言語・動作環境
対象言語● C / C++ / C# / Java / Python
β版：JavaScript/Typescript, PHP, VB.net, Rust

動作環境
● Windows 10/11、 Mac、Linux（Ubuntu 20.04）

10CloneTrackerの特徴
1.

簡単に導入・利用できる○○

2.

【CloneTracker】3分ではじめるAIバグ検出！ コ
ピペコード管理ツール（導入編）

コピペコードの変更履歴を追跡し、バグを生むリスクを検出○○

3.

検出対象とするコピペコードのパラメータ設定は不要
CloneTracker専用のDiﬀ Viewer搭載

システムのプロセスに常駐し、コミット毎に差分を解析
変更履歴を追跡し、「変更忘れ」の可能性があるコピペコードを検出「変更忘れ」など、コピペコードの危険性に応じてアイコン表示

11CloneTrackerの特徴
１．簡単に導入・利用できる
プロジェクト登録画面

指摘詳細画面ご利用開始時に必須の設定は3つだけ。
・管理対象のディレクトリ設定
・対象言語の設定
・文字コードの選択検出対象とするコピペコードのパラメータ設定不要

CloneTracker専用のDiﬀ Viewerを搭載
12

CloneTrackerの特徴
２．コピペコードの変更履歴を追跡（１）Step1~3までが初回解析(※)の一連の流れ

Step1.古いバージョンを解析

Step2.中間のバージョンを解析

Step3.現在のバージョンを解析

・コピペコード検出・中間のバージョンで新たに発生したコピペコードを検出

・最新のバージョンで新たに発生したコピペコードを検出

・前に検出したコピペコードの変更履歴を確認

・検出済みコピペコードの変更履歴を確認※初回解析で変更履歴を確認できるのは、Git管理しているリポジトリに限ります。
Git管理ではないリポジトリの初回解析は、最新バージョンのみ解析され、初回以降の解析で変更履歴の確認が行われます。

13

CloneTrackerの特徴
２．コピペコードの変更履歴を追跡（２）
初回解析以降は、10分おきに直前までの解析内容と最新のコミットとの差分を解析

直前までの解析内容

最新のコミット・検出済みコピペコード
・検出済みコピペコードの変更履歴データ
・最新のコミットで新たに発生したコピペコードを検出
・検出済みコピペコードの変更履歴を確認

14

CloneTrackerの特徴
３．「変更忘れ」など、コピペコードの危険性に応じてアイコン表示（１）
解析結果一覧画面で、4種類のアイコンを表示します。

OpenSSL

解析結果一覧画面イメージ
4種のアイコン

15

CloneTrackerの特徴
３．「変更忘れ」など、コピペコードの危険性に応じてアイコン表示（２）変更なしアイコン
commit（※）

ycop

変更

・変更履歴がない
コピペコード・危険度低コード片

変更ありアイコン

ycop

commit変更コード片※commit毎に解析が行われます。

commit変更
変更・変更履歴がある
コピペコード・危険度低コピペコードの両方に変更が加えられている

16

CloneTrackerの特徴
３．「変更忘れ」など、コピペコードの危険性に応じてアイコン表示（３）変更忘れ？

現在不整合？アイコン

コード片

ycop

commit・変更忘れの可能性がある
コピペコード・危険度高、要確認

変更
変更

過去不整合？アイコン

コード片commitycop

commitcommitcommit変更

変更
変更

後から同じ変更

・高確率で変更忘れの可能性があったコピペコード
・将来、変更忘れが再発する可能性が高い
17・危険度中、要注意コピペコード検出手法
1.

トークン列を元に検出○

2.

５行のまとまりごとにハッシュ値を計算○

3.

{, }, ; やカンマだけの行は 5 行に含めない

中身が同じ 5 行の組を見つける○

4.

マクロ展開前のコードをトークン列に変換

ハッシュ値かつ中央行の生テキストが一致するもの

近接するコピペコードの連結○

連続 or 近接する５行の組を一つのコピペコードに連結18コピペコード検出手法
1. トークン列を元に検出○

inta

マクロ展開前のコードをトークン列に変換=

1;

トークン分解→識別子↑異なるテキスト
↓long

b=100

識別子

イコール

数値

セミコロン

↑同一、コピーとみなす↓;

トークン分解→

識別子

識別子

イコール

数値

セミコロン

19

コピペコード検出手法
2. 5行のまとまりごとにハッシュ値を計算○{, }, ; やカンマだけの行は 5 行に含めない
ソースファイル

ソースファイル20

コピペコード検出手法
3. 中身が同じ5行の組を見つける○

ハッシュ値かつ中央行の生テキストが一致するもの
ソースファイル

ソースファイル

コピペコードと検出

21

コピペコード検出手法
4. 近接するコピペコードの連結○

連続 or 近接する5行の組を一つのコピペコードに連結

クローン

間は3 行まで（ここは不一致）
クローン

22

コピペコード検出手法
4. 近接するコピペコードの連結○

連続 or 近接する5行の組を一つのコピペコードに連結

クローン

一組のクローンクローン

23

コピペコードの重要度判定パラメータ
解析結果の表示画面にて、コピペコードを重要度順にリスト表示します●重要度が高い○○○○●

変更忘れの可能性がある変更履歴がある
コピペコードの行数が多い
生テキストで比較して一致度が高い
if や while など制御構造に関わるトークンが多い

重要度が低い○○同じトークン列の行が繰り返す
特定のトークン列や慣用表現を多く含む

24

初回の解析時間 -目安●

標準解析は、３ヶ月前まで遡って4つの版を一度に解析
Apache1MLOC (Java)OpenSSLCore i9+32GB

2m 55s

3m 26s

9m 55sCore i7+16GB

4m 33s

6m 29s

17m 08s

Apple M2+8GB

5m 54s

9m 29s

28m 53s

行数351,414

1,445,144

736,033

583

12,381

1,984

ファイル数

1MLOC は現在の版のみ解析

25

セキュリティ●

手元のノートPCで動作し、ソースコード情報を外部に送信することはありません。

●

ご利用中のアプリが最新バージョンか確認するための通信を行います。
○○●

アプリの画面がactiveになった際にhttps通信でアップデートの確認が入ります。
ご利用中のアプリが最新バージョンではない場合は、自動アップデートされます。

アプリの利用状況を確認するため、１日一回通信を行います。
○

常駐させている場合は24時間に一度、もしくはアプリ起動時にhttps通信で利用状況を取得しています

26

価格体系
●価格
○ デスクトップ版 無料○ Pro版およびEnterprise版 TBD

27

Appendix

SNS
以下のSNSで製品情報を配信しています。
ボタン、チャンネル登録よろしくお願いします！
●SNS
○
○
○
○

YouTube（https://www.youtube.com/channel/UCPYojz9icI78KNWlbvK5Dog）
X（https://twitter.com/CloneTracker_JP）
Facebook（https://www.facebook.com/proﬁle.php?id=61551984957830）
note（https://note.com/clonetracker_ jp）

29

お問い合わせsupport@clonetracker.com
ご不明な点があればこちらのメールアドレスまでお気軽にお問い合わせください。