更新履歴

既知のバグ
  • [Win32] ソースファイルのファイル名が長いと読み込みに失敗する。 (Thanks to K. Sasaki and J. Osanai)
  • [Win32] CygwinのPythonでは動作しません。(Thanks to J. Samson)
  • COBOLのソースファイルで、日本語の文字が1文字としてカウントされるため、 日本語の語があると73カラム目以降でコメントとみなされるというルールに 対応できない。(Thanks to Y. Kurei)
  • スクリーンセーバーが起動したり、休止状態に移行したりすると、GemXのス クロールバーが消えることがある。(Thanks to K. Urago)
  • メーラーによっては、メールを保存する際に日本語文字列を挿入することに より、不正なlicensedata.emlを生成することがあります(Thanks to Y. Kurei)。
  • タイムスタンプが未来の日付になっているソースファイルをうまく扱えない。
  • VBのコードで識別子に日本語の文字が入っているとCCFinderXがパースに失敗 する。
  • クローンデータやファイルリストを、"デスクトップ"ディレクトリのファイ、 ルに保存できない。
  • Sambaドライブ上で実行するとccfx.exeがクローンの検出中に異常終了するこ とがあるそうです(Thanks to Wiebe Hordijk)。
10.2.7.1 開発中
  • [Win32] ファイル操作にnolock系の関数を利用するように変更。
  • [Win32] Boost 1.36.0を1.37.0に差し替え。
  • [Ubuntu i386] Ubuntu 8.10でコンパイル。コンパイラをg++ 4.2から4.3に 変更。
10.2.7.0 2008/08/29
  • [Win32] SWT 3.4RC3を3.4Finalに差し替え。
  • [Win32] VC2008ランタイムへのリンクを、Side-by-Sideに変更。
  • バグ修正: ccfx dのコマンドラインで、ソースファイルのファイル名を与え る2つの形式を混ぜるとエラーが出ていた。一つは直接コマンドラインに書く 形式で、もう一つはオプション-iにファイルリストで与える形式。
  • バグ修正: 事前審査がうまく機能しななかった。
  • バグ修正: COBOLのぶら下がりelseがうまく処理できなかった。(Thanks to Y. Kurei)
  • "ccfx f"にオプション--preprocessedextensionを追加。同時に、オプション オプション-dを--listoptionsに変更。
  • [Win32] バグ修正: プロセスとファイル操作のタイミングに起因する不具合 のため、コードクローンの検出に失敗したり、GemXのソーステキストの表示 がおかしくなることがあった。(Thanks to Y. Kurei)
  • バグ修正: ccfx dのオプション-kで、"-k 0"または"-k-"でチャンクサイズを 「無制限」に設定すると、検出されたコードクローンをマージソートするルー チンで、必要以上に細かいサイズのグループに分割していた。
  • [Win32] Python 2.4.Xだと、easytorqモジュールにのロードに失敗すること がある。(Thanks to S. Souza)
  • プリプロセス処理で、リテラルの内容もプリプロセス結果ファイルに保存す るように修正した。これまでは、識別子の名前はプリプロセス結果ファイル に記録されていたが、リテラルの内容は捨てられていた。この変更により、 名前が id| または word| で始まるトークンだけがパラメータと認 識されるようになった。(注意) この変更により下位互換性が失われます。 すなわち、CCFinderXの旧バージョンは、新しいバージョンが生成したプリプ ロセス結果ファイルを正常に処理できなくなります。しかし、プリプロセス 結果ファイルから情報を引き出すような、ある種のツールは、リテラルの内 容を利用することができるようになります。
  • インストーラーがVC2008ランタイムをインストールし損ねることがありまし た。ドキュメントのインストールの節に説明を追加しました。 (10.2.5.0エンバグ) (Thanks to K. Nakajima)
  • [Win32] 一部の実行形式をVC++ 2008 SP1で再コンパイル。
  • [Win32] Boostライブラリ1.35.0を1.36.0に差し替えた。
  • バグ修正: GemXがプロセスを起動するとき、子プロセスの標準出力、標準エ ラー出力をリダイレクトしていなかった。これにより、Process#waitFor() がデッドロックすることがあった。
  • バグ修正: "ccfx s"で、入力となるクローンデータファイルが開けないとき、 エラーメッセージを印字せずに終了していた。
10.2.6.1 2008/07/09
  • GemXで、ソーステキストを表示していない状態で検索ボックスから検索しよ うとすると異常終了した。(10.2.6.0エンバグ)
  • GemXの散布図で、ALT+クリックでディレクトリ選択だったのを止めて、右ク リックメニューにした。(UbuntuではALT+クリックを使えないため)。
  • [Ubuntu i386] icu 3.6にリンクしていたため、ccfxがUbuntu 8.4.1で異常 終了した。icu 3.8にリンクするように修正。(Thanks to D. German)
10.2.6.0 2008/07/02
  • [Win32] 環境変数PATHを修正してccfx.exeにパスを通して、ccfx.exeを実行 しようとするとエラーが出ていた。(10.2.5.0エンバグ)
  • [Win32] テンポラリディレクトリに日本語の文字が入っていると、一部の機 能がうまく動作しなかった。(10.2.5.0エンバグ)
  • ccfx dでオプション-rを複数個渡せるようにした。
  • ccfx のオプション-hの出力のフォーマットを一部変更した。
  • tools/clonedatareader.pyをIronPythonのインタプリタでも実行できるよう に修正。
  • GemXでソーステキストのルーラーが冗長に再描画される回数を減らした。
  • SWT 3.4M6を3.4RC3に差し替えた。
  • バグ修正: COBOLのソースファイルで、数字で始まる語(10-STARTのような) をうまく受理できていなかった。(Thanks to Y. Kurei)
  • バグ修正: C++, C#向けのプリプロセススクリプトで-rオプションが指定さ れたときに、プリプロセススクリプトの拡張子が変わらなかった。(Thanks to Y. Kurei)
  • バグ修正: Java, C++, C#向けのプリプロセススクリプトで、try文やforeach 文の周りで構造を間違って認識していた。(Thanks to Y. Kurei)
  • バグ修正: C#向けのプリプロセススクリプトで、&, &=演算子が認識されな かった。
  • Java, C++, C#でのぶら下がりelseの後に{}を補完しないようにした。 (これまでは「if () {} else if () {}」は「if () {} else { if () {} }」 と受理されていた。)
  • プリプロセス処理をマルチスレッドで処理するルーチンを、ポーリングを行 わないように書き換えた。
  • [Win32] VC++コンパイラのオプションを変更した。
  • GemXで長いソースファイルのテキストを表示するときのレスポンスを改善。
  • GemXでなるべく砂時計カーソルを出すようにした。 (Thanks to S. Livieri)
  • GemXでソーステキスト内にクローンペアを表示させたときに、左右のファイ ルが同じであったとき、ルーラーでファイル内クローンのコード断片の対応 を示す線が宙ぶらりんに描画されていたのを修正した。
  • マルチコアCPU向けのパフォーマンスチューニング(シングルスレッドでの実 行性能を犠牲にした)。
  • バグ修正: ccfxがマルチスレッドオプション(--threads)を付けて実行され たとき、ごくまれに、プリプロセススクリプトがディレクトリを作るのに失 敗して中断することがあった。
  • C++のソースコードで、コンストラクタの初期化リストを無視するようにした。
  • バグ修正: メトリクスRNRを計算するルーチンが、時々実際より大きな値を 返すことがあった。
  • picoselのコマンドラインで、ダブルクオートでくくることにより、whereの 条件で不等号を書けるようにした。
  • バグ修正: GemXの設定の「クローンセットテーブルでクリックしたときに コード断片のペアを表示する」のチェックを外しても動作が変わらなかった。 (10.2.5.0エンバグ)
  • [Win32] Python 2.6b1向けにVC++2008でコンパイルしたeasytorq.pyd. python26を同梱する。
10.2.5.0 2008/05/05
  • バグ修正: preprocessing_helper.pyのオプション-eがうまく動かなかった。
  • ccfxに、オプション-jを追加。Majoritarian shaperをon/offする。
  • 併せて、今まで単にsoft shaper, hard shaperと呼んでいたシェイパを、 soft block shaper, hard block shaprと呼ぶようにした。
  • バグ修正: ファイル全体がクローンになっている場合など、特定の状況で クローンが検出されていなかった。(Thanks to Y. Kurei)
  • バグ修正: GemXのエンコーディングオプションが機能していなかった。 (Thanks to Y. Kurei)
  • バグ修正: clonedatareader.pyが、クローンデータファイルに注釈(remark) が含まれているときにうまく動作しなかった。
  • プリプロセス結果ファイルディレクトリ機能を導入。オプション-nは完全に 新しいものになった。
  • エラーメッセージの間違いを修正。"cannot not" -> "can't"
  • GemXに簡単な検索機能を追加した。
  • Ccfxがソースファイルのパースに失敗したとき、エラーメッセージにファイ ル名が出力されるようになった。
  • バグ修正: ソースコードのファイル名が日本語だと、行ベースのメトリクス の計測に失敗した。(Thanks to M. Matsuda)
  • ccfxのコマンドライン引数をファイルから読み込むオプションを新設した。
  • GemXでクローンセットテーブル内でクローンセットをクリックしたとき、そ のクローンセットのコード断片のペアを表示するようにした。
  • Java, C++, C#のプリプロセススクリプトに、オプション-kを新設。
  • [Win32] SWT 3.4M4を3.4M6に差し替え。
  • [Win32] ICU4C 3.6を3.8.1に差し替え。
  • Boost 1.34.1を1.35.0に差し替え。
  • ccfxのモードtを廃止した。
  • ccfx Fにオプション-lを追加。
  • ccfxが作成する一部の一時ファイルに拡張子".tmp"がついていないものがあ った。
  • [Win32] Windows XP Homeで実行したときにDLLのバージョン問題が起きるた め、ICU 3.8.1をICU 3.6に差し替えた。
  • [Win32] CCFinderXのインストールディレクトリのパスにスペースが入ってい ても、実行できるようになった。
  • バグ修正: GemXのウィンドウを極端に小さくすると異常終了していた。
  • [Ubuntu i386] GemXのメニュー[ヘルプ]-[GemXについて]や、[ヘルプ]-[ユー ザー登録]が機能するようにした(Firefoxを直接呼び出すことで)。
  • GemXのヘルプメニューから、ドキュメントのページを開くことができるよう にした。
  • [Win32] よりWindowsフレンドリーにするために、テンポラリディレクトリ ディレクトリ、およびGemXの設定ファイル(gemx.properties)を保存するディ レクトリを変更した。
  • [Win32] Bug fix: Visual C++ 2003と2008ではstd::ofstreamの仕様がされ ていたため、日本語のファイル名がうまく扱えなくなっていた。
Beta 2.1 (10.2.4.1) 2008/02/01
  • いくつかの.pyファイルが、10.1.X系列のプリプロセススクリプトとマージ する過程で誤って編集されていました。(Thanks to Y. Kurei)
  • [Win32] マルチコアCPU向けのチューンとして、一部非同期IOを導入した。
  • clonedatareader.pyで、リファレンス実装として提供されているプリティプ リンタが、文字コードをcp932と決めうちしていた。日本語Windows環境以外 ではASCII文字以外のファイル名があると不正な結果になっていた。
  • クローン散布図が、クローンを含むファイルと含まないファイルの境界を表 示するように修正されました。
Beta 2 (10.2.4.0) 2008/01/28
  • 行ベースのメトリクス、CLOCとCVRLを追加。
  • [Win32] バグ修正: 環境変数CCFINDERX_PYTHON_INTERPRETER_PATHを設定する とccfxがPythonインタプリタの起動に失敗していた。(Thanks to M. Matsuda)
  • プリプロセススクリプトを検索機能の便宜のために修正。(検索機能は現在 実験中につき未公開です。)
  • バグ修正: Javaソースファイルの"this"キーワードが、まれにトークンとし て識別されないときがあった。
  • Javaのアノテーションの構文のサポートを追加。
  • バグ修正: Javaのソースコードで、メソッドの返り値が汎用型だったとき (<T> getHoge()など)、メソッドの本体をブロックと認識できていなかった。
  • ccfxのコマンドラインで、デフォルトのモードを廃止。"ccfx d ..."を "ccfx ..."と省略できなくした。
  • バグ修正: ソーステキストの行番号の表示が、ソースコードの見えている部 分をルーラー内でドラッグによって移動したときに、更新されていなかった。
  • バグ修正: GemXのクローンセットフィルタリングメニューが機能していなかっ た。
  • [Win32] 一部の実行ファイルをVisual C++ 2008を用いて再コンパイルした。
  • [Win32] SWTランタイムを3.4M2から3.4M4に差し替えた。
  • バグ修正: C#用のプリプロセススクリプトが、文字列を返すメソッドの定義 ブロックを認識していなかった。(Thanks to Y. Kurei)
  • Javaのnewキーワードを伴わない配列の生成(Type ary[] = { .... }のような) へのサポートを追加。
  • バグ修正: C/C++のソースコードで、#defineで定義されるマクロが複数行に および、かつ、スラッシュ、アスタリスクで始まるコメントを含む場合に、 コメント以降がマクロとして認識されていなかった。
  • バグ修正: COBOLのPERFORMキーワードをループではなく呼び出しのために用 いた場合、および、EXIT PERFROMとして用いた場合に、ループとして認識する (Thanks to Y. Kurei)。
  • バグ修正: COBOLのif ... end-ifやperform ... end-performなどのブロック 構造が、正しくブロックとして認識されていなかった。
  • バグ修正: プリプロセススクリプトの中で、"&#xnnnn;"の形式のリテラルが うまく機能していなかった。(Thanks to S. Yui)
  • バグ修正: COBOLのEND METHODが予約語として認識されていなかった。 (Thanks to Y. Kurei)
  • COBOL 2002の予約語INTERFACE, END-INTERFACEへのサポートを追加。
  • COBOLプログラムのブロック構造を認識するルーチンを変更した。
  • COBOLプログラムで、INVOKEやMETHOD-ID、CALLのあとの引用符に囲まれた文 字列を識別子としてみなすように変更した。(Thanks to Y. Kurei)
  • バグ修正: Javaで、length()やequals()などのメソッドの定義が、メソッド の定義と認識されていなかった。(Thanks to Y. Kurei)
Beta 1.5 (10.2.3.5) 2007/11/26
  • バグ修正: 川口さんによって発見されたバグが、さらにまれなケースで再現 していた。(Thanks to S. Kawaguchi)
  • ソーステキストのビューのルーラーで、ソースコートが見えている部分を示 すフレームがドラッグできるようになった。
  • GemXのビューのフォーカスを切り替えるキーボードショートカットを追加し た。
  • クローン検出の前にファイル名をチェックするルーチンを追加した。もし入 力として与えられたファイルネームに、うまくutf-8にコンバートできない ものがあると、ccfxはエラーメッセージを印字して終了する。
  • バグ修正: Pythonで書かれたスクリプトに、Python 2.4で実行できないもの があった。Python 2.5で導入されたconditioanl expressionを使っていたた め。
  • プリプロセスパックファイルの仕様を変更した。OSプリプロセスキャッシュ ファイルと呼ぶことにした。プリプロセスキャッシュ機能はこのバージョン では無効にしてあります。
  • ccfx dのオプション-ci、-threadsを変更。preprocess_helper.pyのコマンド ラインを仕様変更。
  • [Win32] バグ修正: convertxto7がICUの古いバージョンとリンクしていた。 (Thanks to J. Samson)
  • 新しいモードccfx Cを追加。プリプロセスキャッシュファイルを操作するた めのモード。
  • バグ修正: 何らかの理由により、プリプロセス結果ファイルにEOFトークン が存在しない場合に、convertxto7が異常終了していた。(Thanks to J. Samson)
  • コードクローン検出ウィザードを修正。利用者が複数のディレクトリを指定 できるようになった。
  • 新しいオプションccfx D -dを追加。コマンドラインで手抜きすることがで きる。"ccfx D prep -d somedir"は"ccfx F prep somedir -o filelist" + "ccfx D prep -i filelist"とほぼ同じだが、前者はファイルfiellistを 生成しない。
  • バグ修正: GemXのメニュー[ファイル]-[クローンを検出し直す]で表示される ダイアログで、「P-match適用」の値が逆になっていた。
  • [Ubuntu i386] バグ修正: ccfx Fのファイルを検索するルーチンが、 opendir()されたディレクトリストリームをclosedir()し忘れていた。
  • [Win32] バグ修正: preprocessing_helper.pyの古いバージョンが配布パッケ ージに含まれていた。(Thanks to Y. Kurei)
Beta 1.4 (10.2.3.4) 2007/11/01
  • バグ修正: P-matchがONのとき、ccfxは識別子のトークンの次のトークンで 始まるコード断片を持つコードクローンをまれに検出しないことがあった。 (Thanks to S. Kawaguchi)
  • C/C++のプリプロセススクリプトを、stdint.hに対応させた。
  • バグ修正: C#のプリプロセススクリプトが「delegate { ... };」から不正な トークン列を生成していた。(Thanks to Y. Kurei)
  • C#用のプリプロセススクリプトに、キーワードalias, partial, yield, および 演算子=>, ::のサポートを追加した。
  • Gnu trove 2.0を2.0.1に差し替え。
  • [Win32] SWTランタイム3.3を3.4M2に差し替え。
  • Java、C++向けのプリプロセススクリプトを少し改良。
Beta 1.3 (10.2.3.3)
  • ICU 3.4を3.6に差し替え。
  • バグ修正: C#のusing文がうまくパーズされず、using文の周りでは不正なトー クン列が生成されていた。(Thanks to Y. Kurei)
Beta 1.2 (10.2.3.2) 2007/08/07
  • バグ修正: GemXの[ファイル]-[ファイルリストを保存]が動作しなかった(10. 2.1.0エンバグ)。
  • バグ修正: オプション「ccfx f -c」が、利用可能なエンコーディングを印 字したあと、プリプロセススクリプトの名前も印字していた。
  • Python.exeを直接呼ぶように修正。(以前のバージョンは、cmd.exeを通して 間接的に呼んでいた。)
  • subprocess.Process()をos.popen()で置き換えた。前者はサブプロセスを 起動する際に実行時エラーを起こすことがあるらしいため(Thanks to Y. Kurei)。
  • 最新のライブラリを使うように修正。Boost 1.34.0, GNU Trove 2.0, SWT 3.3。
  • C/C++向けのプリプロセススクリプトを修正。
  • バグ修正: GemXのソーステキストでテキストが選択されていないとき、コン テキストメニュー「テキストをコピー」がヌルポインタエラーを引き起こし ていた。
  • GemXのスクラップブックを修正。
  • プリプロセスでのマルチスレッドを実装。
Beta 1 (10.2.3.0) 2007/06/25
  • プリプロセスパックを追加した。プリプロセス結果のファイルは、パックフ ァイル(.ccfxprep.pack)にまとめられる。
  • 環境変数CCFINDER_TEMPORARY_DIRECTORYが設定されていると、そのディレク トリに一時ファイルを作るようにした。
  • バグ修正: サブプロセスが終了したすぐ後でファイルを開こうとしてファイ ルI/Oエラーになることがあった。サブプロセスの終了後に50ms待つように修 正した。
  • convertxto7をアップデートして、.ccfxprep.packを扱うことができるように した。
Alpha 2 (10.2.2.0) 2007/06/06
  • スキャッタープロットを修正して、ディレクトリの名前を表示するようにし た。
  • スキャッタープロットで、ディレクトリをALT+クリックで選択できる。
  • プリプロセスのためのインタプリタを、pythonのライブラリ(.pyd)として再 実装。併せて、プリプロセススクリプトを、Pythonスクリプト(.py)として再 実装。
  • プリプロセス結果のファイルのファイル名に、プリプロセススクリプトのバー ジョン番号を埋め込むようにした。
  • テンポラリファイルの名前の生成方法を変更。
Alpha 1.1 (10.2.1.1) 2007/05/31
  • ファイルテーブルとクローンセットテーブルにチェックボックスを追加。
  • ソーステキスト独立モードを、スクラップビューで置き換えた。スクラップ ビューは独立モードよりも分かりやすい。
  • ソーステキストに何らかのソースコードが表示されたときに、その最初の表 示位置を示すためのマーカーを追加。
  • バグ修正: GemXで保存されたクローンデータを開いた後にメトリクスを求め ようとするとエラーになることがあった。(10.2.1.0エンバグ)
  • SWTランタイムをバージョン3.3RC2に差し替えた。
Alpha 1 (10.2.1.0) 2007/05/24
  • ソーステキストの左側の「マップ」での線の描画を変更して、3つ以上のソー スファイルが表示されるときに、線の数を減らすようにした。
  • ccfx dのコマンドラインを仕様変更。プリプロセススクリプトの名前が必須 になった。(異なるプリプロセススクリプトを同じ拡張子に関連づけること を可能にするため。)GemXのダイアログもいくつか、それに追従するために 更新された。
  • バグ修正: プリティプリンタが、(-bや-tなどの)オプションを、互換性のな いフォーマットで印字していた。
  • プリティプリンタのファイル注釈のフォーマットを変更した。
  • ファイルリストのフォーマットを変更した。新しいファイルリストにはファ イル注釈を含めることができる。
  • ccfx dのオプション-iaと-ioを廃止した。
  • ccfx dのオプション-m(チャンクサイズ)を-kに変更。さらに、クローンデー タファイルにに-kの値が記録されるようにした。
  • ccfx dにオプション-mrを追加した。
  • ccfx pのオプションや機能を刷新した。
  • ccfx dにオプション-wを追加した。このオプションは旧CCFinderの-cwや-cf に相当する。
  • バグ修正: ファイルのRNRの値が、1.0より大きくなることがあった。また、 RNRの定義を変更した。ファイルのLENの値が0のとき、以前のバージョンでは RNRの値は0.0となっていたのを、1.0に変更した。
  • GemXのクローン検出ウィザードに事前審査のステップを追加した(実験的な 実装)。
  • アンプリティプリンタをccfx.exeにマージした。ccfx p -aで呼び出すことが 可能になった。ccfxunp.exeはパッケージから取り除かれた。
  • バグ修正: ConvertXto7が10.2.Xフォーマットのクローンデータを読み込めな かった。
Alpha 0 (10.2.0.0) 2007/05/14
  • バグ修正: Javaのソースファイル中の文字リテラル'"'のプリプロセスの結果 がおかしくなっていた。(Thanks to Jan Vlegels)
  • 逆コンバータツールを追加。プリティプリント(ccfxd Pにより)されたクロー ンデータファイルをバイナリフォーマットにコンバートするツールです。
  • ファイルにアクセスするコードが32ビットオフセットを使っていた。そのよ うなコードを64ビットオフセットを使うように修正した。
  • バグ修正: Javaのソースファイル中で小数点で始まる数値リテラル(「.5f」 のような)が、小数点と数値の2つのトークンに分解されてしまっていた。 (Thanks to Jan Vlegels)
  • Javaのソースファイル中で、「<」と「>」が一つの式に現れると、generics のパラメータとご認識されることがあった。(Thanks to Jan Vlegels)
  • Java 1.5のジェネリクスの構文に対応する。(たとえば、 public static <T extends Object & Comparable<? super T>> T min(Collection<? extends T> coll) { .... }のような)
  • バグ修正: Javaのソースファイルで、配列型が戻り値のメソッドの定義が、 ブロックだと認識されていなかった。
  • クローンデータファイル(.ccfxd)のファイルフォーマットを変更した。
  • アンプリティプリンタ(ccfxunp)を配布パッケージに同梱した。
Pre-alpha 2 (10.1.99.2) 2007/04/04
  • SWTをバージョン3.3M6に差し替え。
  • JDK 1.5.0_11で再コンパイル。
  • バグ修正: ccfx fやGemXのメニュー[ファイル]-[クローンを検出]から、日本 語を含むファイル名を持つファイルが認識されなかった。(Thanks to Y. Kurei)
  • バグ修正: 日本語を含むファイル名を持つファイルは、ソーステキストビュー で全体がコメントであるかのように表示されていた。(Thanks to Y. Kurei)
Pre-alpha 1 (10.1.99.1) 2007/03/22
  • SWTを3.2から3.3M5に差し替えた。
  • フォーカスを持っているタブフォルダの境界が(Eclipseのやつのように)青く ペイントされるようにした(ただし、CTabFolderの実装に依存するハック)。
  • GemXに編集メニューをつけた。
  • GemXに設定ファイルによる色設定機能をつけた。
Pre-alpha 0 (10.1.99.0) 2007/01/24
  • 新オプション-iaをccfx.exeに実装した。
  • Majoritarianシェイパ(仮称)を実装した。
  • Prefix/postfix圧縮(仮称)を実装した。
  • プリプロセスのルールをいくつか変更。
  • RNR値がソースファイルについても計算される(クローンについてだけではなく)。
  • 10.1.12.6の修正を取り込んだ。