home >  Java

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環境で実行したらグラフの見出しが文字化けてしまった。うーん。

参考

Objective‐Cを使わなくてもWebアプリケーション開発の標準技術でiPhoneアプリケーションを開発できる。パソコン向けWebアプリケーションをスタート... 続き
GoFの『デザインパターン』で紹介された23個のパターンを、オブジェクト指向の初心者にもわかるようにやさしく解説。すべてのパターンについて、Javaのサンプルプ... 続き
「JavaScriptは言わばひとかたまりの大理石であり、私はその中からこの言語のすばらしい本質が現れるまで、美しくない機能を取り除いていく。最終的に私が削り出... 続き

コメントする


画像の中に見える文字を入力してください。

Mike Cohn (著), マイク コーン (著), 安井 力 (翻訳), 角谷 信太郎 (翻訳)
採用した現在のタイトルは、見積りや計画づくりといったプロセスを、アジャイルに進めなければならないと謳っているのだ。見積りと計画づくりがアジャイルでないのに、プロジェクトがアジャイルであるということはありえない。

メアリー・ポッペンディーク (著), トム・ポッペンディーク (著), 高嶋 優子 (翻訳), 天野 勝 (翻訳), 平鍋 健児 (翻訳) 「トヨタ生産方式」を源流にする「リーン開発」をソフトウエア開発に取り入れるための具体的方法を紹介した本です。製造分野から始まったリーン活動は、その原則を理解しないままプラクティスだけを開発分野に適用しようとしても、行き詰るか失敗に終わってしまいます。本書は、リーンの7大原則を「価値」「ムダ」「スピード」「人」「知識」「品質」「パートナー」に整理し、ソフト開発現場にどうしたら効果的に適用できるかを、多くの実例を交えながら具体的に説明します。

著者:Yugui 税込 2,310 円
本書は、他言語でのプログラミング経験を持つ人を対象に、Rubyの特徴、Rubyならではの方法や慣習について解説します。これはRubyの資料を読んで実践的な学習を進めていくために必要な前提知識です。本書はRubyの基礎的な部分とメタクラスやブロック構文のような独自の概念、それらにまつわる文化を説明し、Ruby特有の考え方を知ってもらうことを目的としています。

本書は、Railsの入門からリファレンスまでをわかりやすく解説した書籍です。第1部と第2部では、Railsの背景にある概念について説明し、あっという間に簡単なオンラインストアを開発してみせます。

著者:James Shore, Shane Warden アジャイル開発は人のなせる技である。アジャイル開発を極めるためには、その時々で無数の可能性を評価して最善の方策を選択することを学ぶ必要がある。本書は、あなたがアジャイル開発の「道」を極める手助けをしたい。

daipresents!! ҂̑蕨

tWn{github tWn{Google Code