ふにゃるんv2

もとは、http://d.hatena.ne.jp/Wacky/

コピペ撃退ツール(CCFinder)を試してみました

この間、コードの評価を行う何がしかの基準って、何があるんだろう?と思って、ネットをふらふら さ迷っていたら、「コードクローン」という評価方法があるらしい事を見つけました。


要するに、プログラム初心者の頃によくやってしまう、

  1. Aの機能を作る
  2. Bの機能を作ろうと思うが、Aの機能を土台にすりゃ簡単に作れる事が判る
  3. Aのソースコードコピー&ペーストし、一部変更して、Bの機能を作る

って言う、いわばコピペプログラミングですね。


これをやると何が悪いかって言うと、概ね以下の理由によります。

  • 単純にソースコードの量が倍増する→大量のソース(ページ)を読むのは難儀
  • AとBの機能の類似性と相違点が判らなくなる→違いは目立たせないと、ミスを誘発する
  • 共通部分を直す時、修正して回る必要がある→修正時間が掛かる

後は、個人的には、コピペプログラムは、医者の治療に例えると、「患者の病状を深く知ろうとせずに、付け焼刃治療をしている」に等しいと思っています。


で、その評価ソフトとして、以下が有名らしいです。


で、実際に試してみました。(下のは、IronPython 2.0 Alpha3のもの)

CCFinder1
CCFinder1 posted by (C)wacky

CCFinder2
CCFinder2 posted by (C)wacky


ふ〜む、コピペしていると思われる箇所が色付け表示されるんですね。結構、いや かなり使えるかも。


ちなみに、自分の作ったコードを少し喰わせてみました。(上がC++で作った奴。下がC#で作った奴。Pythonは、CCFinderでサポートしてないんで…)

CCFinder3
CCFinder3 posted by (C)wacky

CCFinder4
CCFinder4 posted by (C)wacky

は、恥ずかしいよぅ。

余談ですが

ソフトのインストールは、

  1. 7Zipファイルを展開し
  2. CCFinderのWeb siteで登録して入手した使用許可ファイルをbinフォルダに置いて、
  3. gemx.batを実行する

だけです。

実行には、Javaを入れておく必要があるらしいですが、大抵入っちゃっているので、そのまま動くでしょう。