CVSの開発履歴やコミット数などの統計情報を簡単に見れないかと調べていると、StatCVSというものが便利そうだった。Javaでできていて、JDKがあればすぐ動かせる。
StatCVS – Stat Your Repository
その他、SVN版とかRSS配信するスクリプトも発見。
動かしてみる
CVSの開発履歴をグラフィカルに表示する StatCVS by cles::blogさんを参考に、Version0.4.0で試してみると、なかなか素敵。
Quick StartやManualに詳しいやり方は書いてある。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の改良
目標は以下。
- 日本語化
- 文字コードを指定してlogファイルを読み込む
- 文字コードを指定して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環境で実行したらグラフの見出しが文字化けてしまった。うーん。