StatCVSでCVSの統計情報をhtmlで出力(日本語化も)

感想おまちしてます!

CVSの開発履歴やコミット数などの統計情報を簡単に見れないかと調べていると、StatCVSというものが便利そうだった。Javaでできていて、JDKがあればすぐ動かせる。
StatCVS – Stat Your Repository
その他、SVN版とかRSS配信するスクリプトも発見。

  1. Subversionのステータスを見える化「StatSVN」
  2. Subversion/CVSログをRSS/HTMLに「Crank」
スポンサーリンク

動かしてみる

CVSの開発履歴をグラフィカルに表示する StatCVS by cles::blogさんを参考に、Version0.4.0で試してみると、なかなか素敵。
Quick StartManualに詳しいやり方は書いてある。cvs -d /cvsroot checkout modulename
チェックアウト>ログファイル作成>StatCVS実行の順になる。

 cvs -d /cvsroot checkout modulename
cvs log > logfile.log
java -jar /path/to/statcvs.jar /path/to/module/logfile.log /path/to/module

しかし、コミットログなどが日本語だと文字化けしてしまう。さらに調べると、StatSVN(StatCVS)の文字化け(charset)をソースを変更して直す by ipa styleさんというのがあり、試してみたがうまくいかない。
logの文字コードがまちがっていたのかも。

StatCVS0.4.0の改良

目標は以下。

  1. 日本語化
  2. 文字コードを指定してlogファイルを読み込む
  3. 文字コードを指定してhtmlファイルを出力する

ダウンロードしてきたファイルをそのままEclipseにImportする。Java1.4でコンパイルされているみたいだけどJava1.6でも問題なかった。

/build.xml修正

AntしてみるとJavadoc生成でエラーが出た。Javadocはいらないのでallで実行したときにJavadocが実行されないようにした。

<!--<target name="all" depends="zip,javadoc,run" />-->
<target name="all" depends="zip" />

/src/net/sf/statcvs/statcvs_ja.properties作成

statcvs.propertiesに以下を追記。

# fujihara add
LOG_CHARSET=UTF-8
OUTPUT_CHARSET=UTF-8

statcvs.propertiesをコピーしてstatcvs_ja.propertiesという名前で保存。日本語化してnative2asciiしておく。

/src/net/sf/statcvs/Messages.java修正

48行目あたりをLocaleを使うようにした。

private static final ResourceBundle RESOURCE_BUNDLE =
ResourceBundle.getBundle(BUNDLE_NAME, Locale.getDefault());

/src/net/sf/statcvs/Main.java修正

163行目あたり。FileReaderをInputStreamReaderに修正。

final Reader logReader =
new InputStreamReader(
new FileInputStream(
ConfigurationOptions.getLogFileName()) , Messages.getString("LOG_CHARSET"));

/src/net/sf/statcvs/pages/Page.java修正

204行目あたり。FileWriterをOutputStreamWriterに修正。

//FileWriter w = null;
OutputStreamWriter w = null;
try {
//w = new FileWriter(this.config.getRootDirectory() + fileWithExtension);
w = new OutputStreamWriter(
new FileOutputStream(
this.config.getRootDirectory() + fileWithExtension) ,
Messages.getString("OUTPUT_CHARSET"));

/src/net/sf/statcvs/pages/MarkupHTML.java修正

28行目あたり。charsetをpropertiesからの読み込みに修正。

+ "charset=" + Messages.getString("OUTPUT_CHARSET") + "\"/>\n"

実行

jdk14.batにJDKの設定を記述。いるのかいらんのかわからんけど念のため。

set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_06
set PATH=C:\Program Files\Java\jdk1.6.0_06\bin;%PATH%

statcvs.batがあるので、それを以下に修正して実行してみる。test-cvsにcvs.logがあるので、cvsを入れなくても実行できた。結局logの解析ツールということ。

java -jar .\dist\statcvs.jar -output-dir .\stats .\test-cvs\cvs.log .
pause

statsディレクトリにファイルが出力されるはず。

LGPL

ライセンスがLGPLなので、修正したソースコードを公開しておく。distフォルダにjarファイルがある。
statcvs-0.4.0Fuji.zip
コンパイルが面倒なら、jarファイルを解凍して、statcvs.propertiesの文字コード指定を修正し、再度Jarファイルにすればよい。

jar cvfm statcvs.jar META-INF\MANIFEST.MF .

追記

logファイルEUCでLinux環境で実行したらグラフの見出しが文字化けてしまった。うーん。