2012-01-05 22 views
5

JintkinsのAndroid Lintの結果を表示するにはどうすればよいですか?警告として?コンパイラの警告やPMD/Checkstyleの警告と同様に、JenkinsのGUIから警告を参照したいと思います。Android Lintの結果をJenkinsに表示

ジェンキンスジョブからの出力はこのようなものです:

[exec] 
[exec] Scanning org.digitalcure.ccnf.app: ..........Incorrect detector reported disabled issue TooManyViews 
[exec] Incorrect detector reported disabled issue TooManyViews 
[exec] ... 
[exec] 
[exec] Scanning org.digitalcure.android.common: ... 
[exec] res/values/strings.xml: Warning: The resource R.string.display_unit_abc appears to be unused [UnusedResources] 
[exec] res/values/strings.xml: Warning: The resource R.string.edit_error_abc appears to be unused [UnusedResources] 
[exec] Warning: Missing density variation folders in res: drawable-xhdpi [IconMissingDensityFolder] 
[exec] 
[exec] 0 errors, 3 warnings 

Androidのリントは、あまりにもXMLファイルを作成することができますが、私はファイルを解析することができ一切ジェンキンスプラグインが存在しないことを恐れています。または私は何かを逃していますか?

+2

Lint XMLフォーマットは他の同様のJavaツールと互換性がないため、厄介です。私はリントの結果を解析するためにJenkinsのプラグインに取り組んできました。 –

+0

JenkinsのAndroid LintプラグインであるChristopherが非常に役に立ちます。とにかく、Pavolの助けを借りて私は私の問題を解決しました。プラグインがテスト可能な場合は、コメントを記入してください。ありがとうございました! – stefan222

答えて

3

パボルは、あなたのインスピレーションのためにどうもありがとうございました!残念ながら、あなたの正規表現/スクリプトは私のためには機能しませんが、それはさらなる調査のための非常に良い出発点でした。ここに私の設定のためにどのような作品です:

名:Android Lint Parser

正規表現:([^\s]*:)?([^ ]*):\s+(.*)\[(.*)\]$

のGroovyスクリプト:あなたはSDKツールR17を使用している場合

import hudson.plugins.warnings.parser.Warning; 
import hudson.plugins.analysis.util.model.Priority; 

String fileName = matcher.group(1); 
String lineNumber = ""; 
String priority = matcher.group(2); 
String message = matcher.group(3); 
String category = matcher.group(4); 

if (fileName == null) { 
    fileName = "(no file)"; 
} else { 
    int idx = fileName.indexOf(':'); 
    if (idx > -1) { 
    lineNumber = fileName.substring(idx + 1, fileName.size()); 
    fileName = fileName.substring(0, idx); 

    int idx2 = lineNumber.indexOf(':'); 
    if (idx2 > -1) { 
     lineNumber = lineNumber.substring(0, idx2); 
    } 

    idx2 = lineNumber.indexOf(' '); 
    if (idx2 > -1) { 
     lineNumber = lineNumber.substring(0, idx2); 
    } 
    } 
} 

return new Warning(fileName, lineNumber.size() > 0 ? Integer.parseInt(lineNumber) : 0, "Android Lint Parser", category, message, priority.equals("Error") ? Priority.HIGH : Priority.NORMAL); 
0

いくつかのバージョンのコンパイル警告プラグインでは、regexpとgroovyスクリプトを使用してjenkinsの設定サイトからパーサを作成できます。私はlintのためにシェルスクリプトとして実行し、何らかのファイルへの出力を作成しました。

正規表現:^\s*([^ ]*): ([^ ]*):\s*(.*)\[(.*)\]$

のGroovyスクリプト:

import hudson.plugins.warnings.parser.Warning; 
import hudson.plugins.analysis.util.model.Priority; 

String fileName = matcher.group(1) 
String lineNumber = ""; //matcher.group(1) 
String priority = matcher.group(2) 
String message = matcher.group(3) 
String category = matcher.group(4) 
int idx = fileName.indexOf(':'); 
if (idx > -1) { 
    lineNumber = fileName.substring(idx+1,fileName.size()); 
    fileName = fileName.substring(0,idx); 
} 

return new Warning(fileName, lineNumber.size() > 0 ? Integer.parseInt(lineNumber) : 0, "Android Lint Parser", category, message, priority.equals("Error") ? Priority.HIGH : Priority.NORMAL); 
7

ジェンキンスは今、Android Lint Pluginを持っていますまたはより新しい。

これは、Lint XMLを解析し、結果をJenkinsの他の静的解析プラグインと同じスタイルで表示します。

+1

私はこのプラグインを使用して、作業に最適です。ありがとう。 –

+0

このプラグインも使用しようとしましたが、lintの結果は表示されません(http://stackoverflow.com/questions/12716150/jenkins-lint-plugin-not-picking-up-resultsを参照)。間違っていますか? –

関連する問題