のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

Python リファクタリングに使えるCloneDigger

Sponsored Links

皆さんこんにちは
お元気ですか。私は元気なのか・・・?
TOEICのリベンジを果たす時が来るのだろうか。

さてと、今日はリファクタリングに使えるソフトであるCloneDiggerを紹介したいと思います。
一言でいうと、ソフトウェアのクローンコードを検出=類似コードの検出を行うことです。

CloneDiggerの概要

CloneDiggerとは?

Pythonのソースコード内のClone Codeを検出します。GPL Licenseを保持しているようです。
以下、公式にあるCode Cloneのスライドより

Code Cloneとはなにか?

ソースコード内にある似ているコードのことです。

ソースコードには20%程のClone Codeがあるようです

まず、ソースコードのクローンは5-20%程あるようです。

ソースコードクローンが用いられる要因

成長戦略、メンテナンスの利点、根本的な原因、開発戦略によるものだそうです。

なぜ、ソースコードクローンはいけない?

最初に書いたコードが間違えっていると全てのコードを変更する必要がある。まぁ変更するのめんどくさいわな

どうやって検出するの?

ツリー状に構造を解析して検出するらしい。

CloneDiggerのインストール

sudo pip install clonedigger

実行

$ clonedigger [file名]
Parsing  clone.py ... done
1 sequences
average sequence length: 4.000000
maximum sequence length: 4
Number of statements:  4
Calculating size for each statement... done
Building statement hash... done
Number of different hash values:  2
Building patterns... 2 patterns were discovered
Choosing pattern for each statement... done
Finding similar sequences of statements... 0  sequences were found
Refining candidates... 0 clones were found
Removing dominated clones... 0 clones were removed

とすると同じフォルダの中にoutput.htmlが存在します。

出力ファイル

htmlを見るような感じで見れば大丈夫です。

下の方を見ると以下のような感じになります。
検出されたClone分だけ存在し、青い部分が一致部分、赤い部分は異なる部分です。
要はこれを参考にしながら、自分のコードクローンを直していきましょうということです。

f:id:tereka:20141210035555p:plain

参考文献

Clone Digger | Overview |