谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

QALabでパスに日本語が含まれていると問題が起きる。

Hudsonで静的解析をアレコレやりたいと前から書いていますが、
プラグインがどうにもしっくり来ないので、
いっそ静的解析をQALab(+Limy)に任せようと思って調査しています。


が、タイトルに書いた通り、ファイルに日本語を含むパスがあると、
QALabは正常に結果を集計できないようなんですね。
(qalab.xmlに文字化けが入ってしまうため)


何で文字化けするのかソースを見ていたら、
QALabXMLExporterというクラスの中で、FileWriterを使っている箇所がありました。
http://qalab.sourceforge.net/multiproject/qalab/xref/net/objectlab/qalab/exporter/QALabXMLExporter.html#451

451     public final void save() throws IOException {
452         OutputFormat format = new OutputFormat(compiledStats, "UTF-8", true);
453         FileWriter stringOut = new FileWriter(outputFile);

XMLヘッダに「UTF-8」を指定しておきながら、
ファイル自体は(FileWriterはデフォルトエンコードを利用するので)WindowsではShift-JISになるため
文字化けが発生してしまっているようですね。


幸いなことにQALabXMLExporterに相当する部分は拡張ポイントになっていて
差し替え可能なので、ファイルをUTF-8で作成するようなExporterを書けば解決できそうです。


まだ実際に試したわけではないので、また試したら書きます。