Share |

JGlossary

JGlossary は Java クラスに対する用語集チェックツールです。

ダウンロード

  ファイル名 バージョン 最終更新日
JGlossary jglossary_0.1.1.zip (83,782 byte) 0.1.1 2004/03/25

概要

JGlossary は、Java クラスファイルを解析して、パッケージ名・クラス名・フィールド名・メソッド名が用語集に沿っているかどうかをチェックするツールです。Ant のカスタムタスクとして動作します。

動作環境

Ant 1.5.3 + JDK 1.3.1_04 で動作確認しています。

主な機能

  • 用語集として用意されたテキストファイルとマッチングを行い、用語集に無い単語をクラス単位で抽出します。
  • 用語集に無い単語をパッケージ単位でリストアップします。
  • 用語の 組合せエラー ()を検出します。
  • 用語として許可する接尾辞などを指定できます。
  • フィールド名・メソッド名については、チェック対象となるアクセス修飾子のレベルを指定できます(protected 以上、等)。

オプション機能です。
例えば、用語集に「modifieddate」が登録されている場合、「modifiedDate」は「modified」「Date」と2つの単語が使用されていると考え、組合せエラーとして「modifieddate」を使用するように促すワーニングを出します。

出力結果のサンプルはこちらにあります。このサンプルは、用語集に 「availablelength」 「set」 「get」 「is」 という4つの用語のみ登録した状態で、 JGlossary に付属のサンプルコードに対して用語集チェックを行ったものです。組合せエラーオプションを "on" にしてますので、「availableLength」はエラーとなりグリーンの文字で表示されています。

また、出力される HTML の下のほうに、用語集に無い単語をまとめてリストアップしてありますので、実装工程の成果物( Java クラスファイル)から用語集を作成・補完する際にも役に立ちます。

使用方法

用語集ファイルの準備

チェックに使用する用語集ファイルは、単純なテキストファイルです。実際に用語集を作成しているエクセルファイルや、データベースなどからコピー&ペーストで作成して下さい。ファイルの形式は、下記のように、1行に1単語を記述するような形になります(※下記サンプル中「↓」は改行文字)。
また、チェック時には大文字小文字を区別しません。用語集ファイルも、どちらで作成してもチェック結果に影響はありません。

用語集ファイルサンプル(は改行文字)
availablelength
set
get
is

Ant ビルドファイルの設定

開発対象が下記のようなディレクトリ構成となっている場合、ビルドファイルの定義は下記のサンプルのとおりになります(左側の数字は、説明用の行番号です)。

開発ルートディレクトリ  
classesディレクトリ …コンパイルされたクラスファイルの出力ディレクトリ
libディレクトリ …コンパイルに必要なライブラリの格納ディレクトリ
srcディレクトリ …Java ソースファイルの格納ディレクトリ
build.xml ファイル …Ant 用の build ファイル
用語集テキストファイル …用語集テキストファイル

※jglossary.jar は lib ディレクトリに格納してください。

01<?xml version="1.0" encoding="Shift_JIS" ?>
02<project name="sample builder" default="compile" basedir="." >
03
04    <!-- 環境変数への参照 -->
05    <property environment="env" />
06
07    <!-- javac コンパイルオプション定義 -->
08    <property name="debug" value="on" />
09    <property name="optimize" value="true" />
10
11    <!-- ディレクトリ定義 -->
12    <property name="classes.dir" value="classes" />
13    <property name="lib.dir" value="lib" />
14    <property name="src.dir" value="src" />
15
16    <!-- コンパイル時のクラスパス -->
17    <path id="compile.classpath">
18        <pathelement path="${classes.dir}" />
19        <fileset dir="${lib.dir}">
20            <include name="**/*.jar" />
21            <include name="**/*.zip" />
22        </fileset>
23        <pathelement path="${env.CLASSPATH}" />
24    </path>
25
26    <!-- ディレクトリを作成してビルドの準備を行います。 -->
27    <target name="prepare">
28        <echo>ディレクトリを作成してビルドの準備を行います。</echo>
29        <mkdir dir="${classes.dir}" />
30    </target>
31
32    <!-- 作成したディレクトリの削除を行います。 -->
33    <target name="clean">
34        <echo>作成したディレクトリの削除を行います。</echo>
35        <delete>
36            <fileset dir="." includes="*.log" />
37        </delete>
38        <delete includeEmptyDirs="true">
39            <fileset dir="${classes.dir}">
40                <include name="**/*" />
41            </fileset>
42        </delete>
43    </target>
44
45    <!-- コンパイルを行います。 -->
46    <target name="compile" depends="prepare">
47        <echo>コンパイルを行います。</echo>
48        <copy todir="${classes.dir}" overwrite="true">
49            <fileset dir="${src.dir}">
50                <exclude name="**/*.java" />
51                <exclude name="**/package.html" />
52            </fileset>
53        </copy>
54        <javac
55            srcdir="${src.dir}"
56            destdir="${classes.dir}"
57            debug="${debug}"
58            optimize="${optimize}"
59            deprecation="off" >
60            <classpath refid="compile.classpath" />
61            <include name="**/*.java" />
62        </javac>
63    </target>
64
65    <!-- Java クラスの用語集チェックを行います。 -->
66    <target name="jglossary" depends="compile">
67        <taskdef
68            name="jglossary"
69            classpathref="compile.classpath"
70            classname="jp.javable.tool.jglossary.ant.taskdef.JGlossaryTask"/>
71        <echo>Java クラスの用語集チェックを行います。</echo>
72        <jglossary
73            glossary="glossary.txt"
74            classes="${classes.dir}"
75            packages="
76                    sample.packagea.* ,
77                    sample.packageb.* "
78            verbose="on"/>
79    </target>
80
81</project>

ターゲット jglossary (66行~)の内部で、Ant の taskdef 要素(67行)を使用して JGlossary が使用できるようにしています。 taskdef 要素の name 属性(68行)は任意の名前を付けられますが、72行目の要素名に影響します(name を "test" にすると、72行目の <jglossary は <test と記述する)。

classpathref 属性(69行)は、17行目の path 定義を参照しています。 JGlossary 実行時にはチェック対象となるクラスを動的にロードしますので、コンパイルに使用したライブラリが必要となります。この指定は必須です。また、 jglossary.jar もこのパスの中(この場合 lib ディレクトリの下)に入れておくと良いでしょう。

70行目の classname 属性は固定です。

72行目以降で JGlossary 実行時の設定を何種類か指定しています。この詳細については、リファレンスを参照して下さい。このビルドファイル自体は、サンプルとして JGlossary の配布アーカイブに含まれています。

Ant の実行

Ant が実行できる環境であれば、コマンドプロンプト(Windows の場合)で ant jglossary とタイプして実行します。下記は上記サンプルを C:\develop ディレクトリで実行した際の出力結果です。

C:\develop>ant jglossary
Buildfile: build.xml

prepare:
     [echo] ディレクトリを作成してビルドの準備を行います。
    [mkdir] Created dir: C:\develop\classes

compile:
     [echo] コンパイルを行います。
     [copy] Copied 2 empty directories to C:\develop\classes
    [javac] Compiling 3 source files to C:\develop\classes

jglossary:
     [echo] Java クラスの用語集チェックを行います。
[jglossary] 初期化処理中....完了
[jglossary] sample.packagea パッケージのチェックを行います。
[jglossary] sample.packagea.SampleClassA クラスをチェック....完了 [30ミリ秒]
[jglossary] sample.packagea.SampleClassB クラスをチェック....完了 [20ミリ秒]
[jglossary] sample.packageb パッケージのチェックを行います。
[jglossary] sample.packageb.SampleClassC$SampleInnerClassD クラスをチェック....完了 [20ミリ秒]
[jglossary] sample.packageb.SampleClassC クラスをチェック....完了 [0ミリ秒]
[jglossary] チェック結果を出力します。
[jglossary] 用語集チェックが正常に終了しました。
[jglossary] チェック結果については jglossary.html を参照して下さい。

BUILD SUCCESSFUL
Total time: 3 seconds

ライセンス

このソフトウェアは無料でご利用頂けます。下記の利用条件は遵守をお願い致します。

利用条件について

  • JGlossary (以下「このソフトウェア」)の著作権は全て作者に帰属します。
  • このソフトウェアのソースコードを改変する事は自由ですが、その際にはご一報下さい。
  • このソフトウェアの再配布はご遠慮願います。
    http://www.javable.jp/tools/jglossary/ から最新版をダウンロードして利用して下さい。
  • このソフトウェアは他の製品に含められません。
  • このソフトウェアの利用によって発生したいかなる問題についても作者は責任を負いません。
    自己責任の下でご利用下さい。
  • このソフトウェアを利用して開発される製品の品質に関しては、作者は一切の保証を致しません。
  • ライセンスの有料利用・無料利用を問わず、ソフトウェアのサポート等は原則行いません。
    バグレポート・機能追加要求等の連絡先は示してありますが、返答及び対応を保証するものではありません。