StigmataX

StigmataX は Javaクラスファイルからバースマーク を抽出し,比較するWebアプリケーションです.バースマークによりク ラスファイルを比較することで,クラスファイルの類似度を測定することが できます.

高い類似度のクラスファイルのペアはどちらか がもう一方をコピーして作られたものと考えられ,クラスファイルの盗用の 発見や,流用して作られたクラスファイルの検索,また,プロダクト全体の 流用率の測定に用いることが可能です.

StigmataX は以下のURLから誰でもアクセスすることが可能です.

http://tun.naist.jp/stigmata/

チュートリアル

メインページ

StigmataX のトップページを開くと,スプラッシュスクリーンのあと, 自動的にこのページへ遷移します. このページでは,比較対象となるクラスファイル(が含まれたjarファイル)を指定し,抽出するバースマークを選択して,比較方法を指定します.

main page

バースマークの抽出

バースマークをクラスファイルから抽出するためにはメインページで, バースマークを抽出したいクラスが含まれたjarファイルを指定し,また, 抽出するバースマークの種類を指定する必要があります. 抽出に関しては,X Axis, Y Axis は関係ありません.

  1. X軸(X Axis)もしくは,Y軸(Y Axis)に比較対象のjarファイルを追加します.
  2. 抽出するバースマークを選択します.
  3. 抽出ボタンを押下します.
Do extraction birthmarks

バースマークの抽出結果

抽出した結果はクラスごと,バースマークごとにツリー上に表示されます. また,抽出結果をXML形式,CSV形式で保存することが可能です. 保存する場合はそれぞれ「ダウンロードXML」ボタン,「ダウンロードCSV」ボタンを押下します.

Birthmarks extraction result

バースマークの総当たり比較

比較方法は全ての組み合わせについて比較する総当たりと, 同じクラス名を持つクラス同士を比較するペアを推測して比較, また,ユーザがクラス名のペアを指定して比較するペアを指定して比較 の3種類の比較方法を選択することができます.

  1. X軸(X Axis)に配置する比較対象を選択します.
  2. Y軸(Y Axis)に配置する比較対象を選択します.
  3. 抽出するバースマークを選択します.
  4. 比較する方法を選択します.
do comparison birthmarks

バースマークの総当たり比較の結果

バースマークの総当たり比較の結果はインラインフレームに表として表示されます. 表の列にはX Axisに指定したjarファイルに含まれるクラスが,表の行には Y Axisに指定したjarファイルに含まれるクラスが列挙されます. そして,表の各セルには該当するクラスを比較した結果が表示されています. 類似度が1の場合(バースマークが完全に一致)はセルの背景色が赤くなり,類似度が0に近付くほど,文字色が薄くなります.

統計結果がフレームの下に表示されます.

この画面から,表の列と行から同じ名前を持つペア同士を比較する「同名クラス比較」, ユーザが比較するペアを指定する「指定クラス比較...」の2種類の比較を行うことができます. この二つの比較結果はバースマークのペア比較の結果として表示されます.

比較結果をXML形式,CSV形式で保存することが可能です. 保存する場合はそれぞれ「ダウンロードXML」ボタン,「ダウンロードCSV」ボタンを押下します.

Birthmarks comparison result

バースマークのペア比較の結果

バースマークのペア比較の結果はインラインフレームに表として表示されます. 表の1列目にX Axisに指定したjarファイルに含まれるクラスが,2列目に Y Axisに指定したjarファイルに含まれるクラスが列挙されます. そして,3列目には1列目と2列目のクラスを比較した結果が表示されています. 類似度が1の場合(バースマークが完全に一致)はセルの背景色が赤くなり,類似度が0に近付くほど,文字色が薄くなります.

比較結果をXML形式,CSV形式で保存することが可能です. 保存する場合はそれぞれ「ダウンロードXML」ボタン,「ダウンロードCSV」ボタンを押下します.

Birthmarks comparison result

設計

画面遷移図

page transition

Copyright

Copyright (C) by EASE Project/Software Engineering Lab., Graduate School of Information and Science, Nara Institute of Science and Technology.

バグや機能改善の要望については stigmatax-info[ at ]is.naist.jp までお願 いします.

用語集

バースマーク
プログラム(モジュール)の実行に不可欠な部分からそのプログラムの特徴を抽出し, それを手がかりにソフトウェアを識別して盗用を発見する技術です. また,抽出された情報のことを指すこともある.抽出された情報を比較することで, 抽出元のプログラム同士の類似性を計測することができます.
静的バースマーク
抽出元となるプログラムを静的に解析することで得られるバースマークのことです. 代表的なものに,依存クラス継承関係,フィールドの初期値などがあります.
動的バースマーク
抽出元となるプログラムを動的に解析することで得られるバースマークのことです. 代表的なものに,メソッド(API)呼出の系列や,その頻度があります.
類似度
バースマーク同士を比較したとき,どれくらいバースマーク同士が似てい るかを示す指標です.0〜1の範囲で1に近いほどバースマーク同士が似ています. すなわち,1に近いほど,クラスファイル同士が似ていることを示しています.