コピペ撃退ツール(CCFinder)を試してみました
この間、コードの評価を行う何がしかの基準って、何があるんだろう?と思って、ネットをふらふら さ迷っていたら、「コードクローン」という評価方法があるらしい事を見つけました。
- プログラムの品質向上テクニック【第1回】 - ITアーキテクト
http://www.itarchitect.jp/methodology_and_design/-/42623-2.html
要するに、プログラム初心者の頃によくやってしまう、
- Aの機能を作る
- Bの機能を作ろうと思うが、Aの機能を土台にすりゃ簡単に作れる事が判る
- Aのソースコードをコピー&ペーストし、一部変更して、Bの機能を作る
って言う、いわばコピペプログラミングですね。
これをやると何が悪いかって言うと、概ね以下の理由によります。
- 単純にソースコードの量が倍増する→大量のソース(ページ)を読むのは難儀
- AとBの機能の類似性と相違点が判らなくなる→違いは目立たせないと、ミスを誘発する
- 共通部分を直す時、修正して回る必要がある→修正時間が掛かる
後は、個人的には、コピペプログラムは、医者の治療に例えると、「患者の病状を深く知ろうとせずに、付け焼刃治療をしている」に等しいと思っています。
で、その評価ソフトとして、以下が有名らしいです。
- CCFinder ホームページ
http://www.ccfinder.net/ccfinderx-j.html
で、実際に試してみました。(下のは、IronPython 2.0 Alpha3のもの)
ふ〜む、コピペしていると思われる箇所が色付け表示されるんですね。結構、いや かなり使えるかも。
ちなみに、自分の作ったコードを少し喰わせてみました。(上がC++で作った奴。下がC#で作った奴。Pythonは、CCFinderでサポートしてないんで…)
は、恥ずかしいよぅ。
余談ですが
ソフトのインストールは、
- 7Zipファイルを展開し
- CCFinderのWeb siteで登録して入手した使用許可ファイルをbinフォルダに置いて、
- gemx.batを実行する
だけです。
実行には、Javaを入れておく必要があるらしいですが、大抵入っちゃっているので、そのまま動くでしょう。