本文へジャンプ English

Libra コンポーネントとは

Libra コンポーネントは, コードクローンに対する修正支援を目的としています. デバッグ時や機能追加時に,Libra コンポーネントを使うことによって,漏れなく修正を行うことができます. Gemini コンポーネントを用いても同様の支援は行うことができます. しかし,Gemini コンポーネントは,CCFinder の検出したコードクローン全てをユーザに提供します. デバッグ時や機能追加時は,すべてのコードクローン情報は必要なく, 修正箇所を一箇所突き止めたら,後はその部分とのコードクローンのみを表示すれば十分です.

検出方法

Libra では内部で CCFinder のオプションを用いて, ユーザが入力したコード片と対象ソフトウェアの間のコードクローンのみをユーザに提供します. CCFinder は以下の3タイプのコードクローンの検出のオン・オフがオプションで設定できます.

Libra はユーザが入力したコード片をグループ1,対象ソースコードをグループ2として, グループ間クローンのみを検出するオプションをつけて,CCFinder を実行します. このように CCFinder を実行することによって,必要最小限のコードクローンのみを検出することができます. CCFinder は全てのコードクローンを検出した後,それらをソーティングして出力を行います. 必要最低限のコードクローンのみを検出することで,ソーティングにかかる時間を短縮することができ, より高速に検出結果を得ることができます.

修正支援コンポーネント Libra

コード片を入力

左の図はユーザがコード片の入力を行う画面です. Libra はここで入力されたコード片と指定されたソースコード間のコードクローンのみを検出します. ユーザはこの部分で,最小一致トークン数を入力したコード片のトークン数にすることができます. このようにすることで,入力されたコード片の一部分のみが類似しているコードクローンの検出を制限することができます. Libra コンポーネントは内部でグループ分けを行った後,CCFinder を実行しているだけなので, Aries コンポーネントのように Java のみといった制限はありません. CCFinder が対応しているプログラミング言語であれば,Libra を用いることができます.

Libra スナップショット

ユーザが,コード片とソースコードを指定すると Libra が CCFinder を実行してコードクローン検出を行います. Libra は必要最低限のコードクローンしか検出を行わないので,Gemini 用のコードクローン検出よりも短時間で解析を終了することができます. 解析が終わると,Libra の GUI が立ち上がります. 左の図は GUI のスナップショットです. ウィンドウの左側に対象ソースコードのディレクトリツリーが表示されます. 指定されたコード片とクローンになっているソースコードは青色でハイライトがかかり, そのソースコード内のコードクローン数も表示されます. ディレクトリツリーでファイルを選択すると,そのソースコードが右側のソースコードビューに表示されます. コードクローンの部分はハイライトがかかって表示されます.

Copyright © 2005-2007 大阪大学大学院情報科学研究科 コンピュータサイエンス専攻 井上研究室 All Rights Reserved.