重複コード
先日、ソースコードに含まれる重複コードを検出するアプリがあることを知る。
AIST CCFinderX
http://www.ccfinder.net/ccfinderxos-j.html
とりあえず、インストールしてみる。動作させるのにJavaやPythonが必要みたいだ。
Python 2.7だと動作しない?
よくわからないので以下の場所からPython 2.6.6をダウンロードしてきて、Python2.7のアンインストールは行わずに、Python 2.6.6をインストール。
http://www.python.jp/Zope/download/pythoncore
これで起動するようになったようだ。
ためしに自作アプリのソースを用いて、重複コードの検出を試してみる。
とりあえずgemx.batを実行。
「File」→「Detect Clones...」を選択する。
ソース言語に「cpp」を選択し、検出したいソースの入っているフォルダを指定して、「Next」を押下。
う〜ん…色々設定がある。とりあえず初期値のまま「OK」を押下しよう。
プロット上の黒丸をクリックすると、該当するソースが選択されるようだ。
その状態のまま「Sorce Text」タブを選択してみる。
なるほど、ここが重複ソースと判断されたらしい。
ここは、画面上のボタン等の各プロパティを設定する処理だ。
たしかに、if文の条件式が違うだけで、処理は同じようだ。
あれ?やっぱ違う?同じ?……と悩んだりするのも重複ソースのよろしくない点なんだな、きっと。
このご時世、ボタン等のプロパティを手動で記述すること自体が、既に間違いという気もするけど。
ここは、処理は同じで戻り値だけ違う関数が重複ソースと判断されてる。
たしかにコピペして作った記憶がある。
テンプレート化するべきなんだろう。