

現在、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が正常に完了しない。

== 例外 ==

[code]

    モジュール : 例外により、ファイル /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)
    
[/code]

## ■確認状況

まず、例外の内容を確認しました。

[参考サイト][1]

<https://github.com/jenkinsci/checkstyle-
plugin/blob/master/src/main/java/hudson/plugins/checkstyle/parser/CheckStyleParser.java>

[code]

    module = (CheckStyle)digester.parse(new InputStreamReader(file, "UTF-8"));
    if (module == null) {
        throw new SAXException("Input stream is not a Checkstyle file.");
    }
    
[/code]

例外は、上記のコード上の69行目で発生しているようでした。

UTF-8文字コード指定されており、チェックスタイルのxmlがS-JISとなっていたので、  
ビルド前に以下のコマンドを追加し、変換を掛けたファイルを使用するようにしました。

[code]

    # iconv -f SHIFT_JIS -t UTF-8 ./codingRule/JavaCodeStyle.xml -o ./codingRule/utf.xml
    
[/code]

jenkinsのworkspaceを確認しましたが、確かに入力ファイルはUTF-8となっているのですが、状況が変わりません。

使用しているcheckstyle.xmlは、

<http://checkstyle.sourceforge.net/google_style.html>

で公開されているgoogleのJavaの規約なのですが、手元のAndorid Studio用のプラグインだと問題無く動作します。  
試しに、以下の用に何も設定に含まない最小構成の入力ファイルを用意しましたが、結果変わらずです。

== 最小構成のXML ==

[code]

    <?xml version="1.0" encoding="UTF-8"?>
    <module name = "Checker">
    </module>
    
[/code]

１日試行錯誤しましたが、手詰まり状態です。  
どなたか同じ状況に陥った事がある方、いらっしゃいましたらお力を貸して頂けませんでしょうか。


CC BY-SA 3.0
2017-04-10T09:47:53.813
33906
2017-04-11T11:37:02.153
2017-04-10T11:58:09.510
22484
question
xml jenkins
Jenkinsでcheckstyleプラグインを実行するとパーサーエラーで結果が出力されない


もしかしたら  
「ジョブの設定＞ビルド後の処理＞Checkstyle警告の集計＞集計するファイル」に  
スタイル定義ファイル(checkstyle.xml)を設定していませんか？

もし、そのように設定してるなら…

ここは、スタイルをチェックした結果を集計するレポートファイルを指定する場所なので  
gradle なら

[code]

    build/reports/checkstyle/*.xml
    
[/code]

とかになると思います。


CC BY-SA 3.0
2017-04-11T11:37:02.153
33933
2017-04-11T11:37:02.153
4419
33906
answer