Jenkinsでcheckstyleプラグインを実行するとパーサーエラーで結果が出力されない
現在、JenkinsにてAndroidプロジェクト用にCI環境を構築しているのですが、Checkstyleプラグインが動作せずに困っております。
■環境
OS:Windows 7 64bit/Ubuntu 16.04
Jenkins:2.53
Checkstyle Plug-in:3.47
■発生手順
①Android SDKを用意し、手動でGradleビルドが通る環境を構築(Windows/Linux共に)する。
②Jeninisのタスクでシェルの実行で、Gradleビルド追加。チェックスタイル実行を追加。
③ビルド実行。
以下の例外が発生し、Checkstyleが正常に完了しない。
== 例外 ==
モジュール : 例外により、ファイル /var/lib/jenkins/workspace/LIBERTA-APP TEST/checkstyle-result.xml の処理に失敗しました:
org.xml.sax.SAXException: Input stream is not a Checkstyle file. at hudson.plugins.checkstyle.parser.CheckStyleParser.parse(CheckStyleParser.java:69)
at hudson.plugins.analysis.core.AbstractAnnotationParser.parse(AbstractAnnotationParser.java:54)
at hudson.plugins.analysis.core.FilesParser.parseFile(FilesParser.java:323)
at hudson.plugins.analysis.core.FilesParser.parseFiles(FilesParser.java:281)
at hudson.plugins.analysis.core.FilesParser.parserCollectionOfFiles(FilesParser.java:232)
at hudson.plugins.analysis.core.FilesParser.invoke(FilesParser.java:203)
at hudson.plugins.analysis.core.FilesParser.invoke(FilesParser.java:31)
at hudson.FilePath.act(FilePath.java:997)
at hudson.FilePath.act(FilePath.java:975)
at hudson.plugins.checkstyle.CheckStylePublisher.perform(CheckStylePublisher.java:78)
at hudson.plugins.analysis.core.HealthAwarePublisher.perform(HealthAwarePublisher.java:68)
at hudson.plugins.analysis.core.HealthAwareRecorder.perform(HealthAwareRecorder.java:295)
at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:81)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonitor.java:20)
at hudson.model.AbstractBuild$AbstractBuildExecution.perform(AbstractBuild.java:779)
at hudson.model.AbstractBuild$AbstractBuildExecution.performAllBuildSteps(AbstractBuild.java:720)
at hudson.model.Build$BuildExecution.post2(Build.java:186)
at hudson.model.AbstractBuild$AbstractBuildExecution.post(AbstractBuild.java:665)
at hudson.model.Run.execute(Run.java:1760)
at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
at hudson.model.ResourceController.execute(ResourceController.java:97)
at hudson.model.Executor.run(Executor.java:405)
■確認状況
まず、例外の内容を確認しました。
[参考サイト][1]
module = (CheckStyle)digester.parse(new InputStreamReader(file, "UTF-8"));
if (module == null) {
throw new SAXException("Input stream is not a Checkstyle file.");
}
例外は、上記のコード上の69行目で発生しているようでした。
UTF-8文字コード指定されており、チェックスタイルのxmlがS-JISとなっていたので、
ビルド前に以下のコマンドを追加し、変換を掛けたファイルを使用するようにしました。
# iconv -f SHIFT_JIS -t UTF-8 ./codingRule/JavaCodeStyle.xml -o ./codingRule/utf.xml
jenkinsのworkspaceを確認しましたが、確かに入力ファイルはUTF-8となっているのですが、状況が変わりません。
使用しているcheckstyle.xmlは、
http://checkstyle.sourceforge.net/google_style.html
で公開されているgoogleのJavaの規約なのですが、手元のAndorid Studio用のプラグインだと問題無く動作します。
試しに、以下の用に何も設定に含まない最小構成の入力ファイルを用意しましたが、結果変わらずです。
== 最小構成のXML ==
<?xml version="1.0" encoding="UTF-8"?>
<module name = "Checker">
</module>
1日試行錯誤しましたが、手詰まり状態です。
どなたか同じ状況に陥った事がある方、いらっしゃいましたらお力を貸して頂けませんでしょうか。