読者です 読者をやめる 読者になる 読者になる

JavaNCSSでソースコードがUTF-8の場合にエラー

Java Maven

ソースコードのメトリクスツールのひとつに、JavaNCSSがあります。JavaNCSSでは、以下の2つの指標を用いて、複雑性を分析します。

  • NCSS(Non Commenting Source Statements)
    • コメント行を除く行数
  • CCN(Cyclomatic complexity Number(MaCabe Metric))
    • if,for,while,case,catch などの条件文の数


Maven2でレポートを出力する場合は、pom.xmlの定義を以下のように指定します。

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>javancss-maven-plugin</artifactId>
        <version>2.0-beta-2</version>
      </plugin>
    </plugins>
  </reporting>


ただ、ソースコードUTF-8の場合にエラーとなってしまい、レポートが出力されずに困っています。

[INFO] ----------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ----------------------------------------------------
[INFO] Error during page generation

Embedded error: Error rendering Maven report: Error while JavaNCSS was executing

Encountered "int" at line 132, column 9.
Was expecting one of:
    ";" ...
    "=" ...
    "++" ...
    "--" ...
    "+=" ...
    "-=" ...
    "*=" ...
    "/=" ...
    "&=" ...
    "|=" ...
    "^=" ...
    "%=" ...
    "<<=" ...
    ">>=" ...
    ">>>=" ...
    "." ...
    "[" ...
    "(" ...
    "<" ...
    ":" ...
    "enum" ...
    <IDENTIFIER> ...


エンコードを指定するようなパラメータがあるようなので、以下のように、pom.xmlを変更してみましたが、結果は変わらず。

  <reporting>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>javancss-maven-plugin</artifactId>
        <version>2.0-beta-2</version>
        <configuration>
          <forceEncoding>utf-8</forceEncoding>
        </configuration>
      </plugin>
    </plugins>
  </reporting>


javancss-maven-pluginのJIRAにもバグとしてあがっているのだが、現在のところ未対応のまま。


次に、以下のページを参考にして、Maven2のオプションを指定してみたけど、今度は違ったエラーが発生します。

[INFO] ----------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ----------------------------------------------------
[INFO] Error during page generation

Embedded error: Error rendering Maven report: Error while JavaNCSS was executing

Lexical error at line 38, column 68.  Encountered: "\r" (13), after : "\"[;b"

どうやら、一部の文字が誤って解釈されてしまうようです(上記は「名」という文字がCRとして解釈されている様子)。


JavaNCSSをコマンドラインから実行した場合でも、同様のエラーが発生するので、どうやらJavaNCSS本体の問題のようです。
うーん、困った・・・