Jun 05, 2006

[Library] JDiff にチャレンジ

JDiff とは

JDiff はプロジェクトのバージョン間で API の diff を取るツール。 カスタム Doclet として提供され、新旧 API Document の比較を行い、比較結果の API Document を生成する。 ソースコードではなく、API の比較というのは目新しいので試してみた。

JDiff
http://sourceforge.net/projects/javadiff/

サンプルの実行

サンプルは Ant から実行できる。 JDK、Ant にパスを通して Ant を実行する。 ↓の例では JDiff のバージョンを確認するために JDiff にもパスを通している。

>set JAVA_HOME=c:\_java\jdk\1.5.0_06
>set PATH=%JAVA_HOME%\bin;%PATH%
>set ANT_HOME=c:\_java\tool\ant\1.6.4
>set PATH=%ANT_HOME%\bin;%PATH%
>set JDIFF_HOME=c:\_java\tool\jdiff\1.0.10
>set PATH=%JDIFF_HOME%\bin;%PATH%
>java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)

>ant -version
Apache Ant version 1.6.4 compiled on May 19 2005

>jdiff -version
JDiff version: 1.0.10

>cd c:\_java\tool\jdiff\1.0.10\examples

>ant
Buildfile: build.xml

init:

create_javadoc_dirs:

javadoc_old:
  [javadoc] Generating Javadoc
  [javadoc] Javadoc execution
  [javadoc] パッケージ com.acme.sp のソースファイルを読み込んでいます...
  [javadoc] パッケージ com.acme.util のソースファイルを読み込んでいます...
  [javadoc] Javadoc 情報を構築しています...
  [javadoc] 標準 Doclet バージョン 1.5.0_06

  ...略

javadoc_new:
  [javadoc] Generating Javadoc
  [javadoc] Javadoc execution
  [javadoc] パッケージ com.acme.sp のソースファイルを読み込んでいます...
  [javadoc] パッケージ com.acme.spextra のソースファイルを読み込んでいます...
  [javadoc] Javadoc 情報を構築しています...
  [javadoc] 標準 Doclet バージョン 1.5.0_06

  ...略

jdiff_old_api:
  [javadoc] Generating Javadoc
  [javadoc] Javadoc execution
  [javadoc] パッケージ com.acme.sp のソースファイルを読み込んでいます...
  [javadoc] パッケージ com.acme.util のソースファイルを読み込んでいます...
  [javadoc] Javadoc 情報を構築しています...
  [javadoc] JDiff: doclet started ...
  [javadoc] JDiff: writing the API to file 'SuperProduct_1.0.xml'...
  [javadoc] JDiff: finished (took 0s, not including scanning the source files).

jdiff_new_api:
  [javadoc] Generating Javadoc
  [javadoc] Javadoc execution
  [javadoc] パッケージ com.acme.sp のソースファイルを読み込んでいます...
  [javadoc] パッケージ com.acme.spextra のソースファイルを読み込んでいます...
  [javadoc] Javadoc 情報を構築しています...
  [javadoc] JDiff: doclet started ...
  [javadoc] JDiff: writing the API to file 'SuperProduct_2.0.xml'...
  [javadoc] JDiff: finished (took 0s, not including scanning the source files).

jdiff_compare_apis:
  [javadoc] Generating Javadoc
  [javadoc] Javadoc execution
  [javadoc] ソースファイル C:\_java\tool\jdiff\1.0.10\lib\Null.java を読み込んで
います...
  [javadoc] Javadoc 情報を構築しています...
  [javadoc] JDiff: doclet started ...
  [javadoc] JDiff: reading the old API in from file 'SuperProduct_1.0.xml'... fi
nished
  [javadoc] JDiff: reading the new API in from file 'SuperProduct_2.0.xml'... fi
nished
  [javadoc] JDiff: comparing the old and new APIs ...
  [javadoc]  Approximately 64% difference between the APIs
  [javadoc] JDiff: reading the comments in from file 'C:\_java\tool\jdiff\1.0.10
\examples\sample_output\newdocs\user_comments_for_SuperProduct_1.0_to_SuperProdu
ct_2.0.xml'...
  [javadoc] JDiff: generating HTML report into the file 'C:\_java\tool\jdiff\1.0
.10\examples\sample_output\newdocs\changes.html' and the subdirectory 'C:\_java\
tool\jdiff\1.0.10\examples\sample_output\newdocs\changes'
  [javadoc] JDiff: writing the comments out to file 'C:\_java\tool\jdiff\1.0.10\
examples\sample_output\newdocs\user_comments_for_SuperProduct_1.0_to_SuperProduc
t_2.0.xml'...
  [javadoc] JDiff: finished (took 0s).

jdiff:

BUILD SUCCESSFUL
Total time: 14 seconds
>
Ant プロセス終了後、file:///C:/_java/tool/jdiff/1.0.10/examples/sample_output/newdocs/changes.html にアクセスする。

[JDiff 生成結果(1)] [JDiff 生成結果(2)]

Posted in Library | このエントリーをはてなブックマークに追加 | この記事をクリップ! livedoor クリップ |