5

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

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 Lint でも XML ファイルを作成できますが、残念ながらファイルを解析できる Jenkins プラグインはありません。または、何か不足していますか?

4

3 に答える 3

7

これは、Jenkins用のWarnings NGプラグイン(2012年にリリースされたAndroid Lintプラグインに取って代わりました)を使用して行うことができます。

これにより、Lint XMLが解析され、Jenkinsの他の静的分析プラグインと同じスタイルで結果が表示されます。

于 2012-03-21T22:28:02.053 に答える
3

パヴォル、インスピレーションをありがとう!残念ながら、あなたの正規表現/スクリプトは私には機能しませんが、さらなる調査の出発点としては非常に良いものでした. これが私の構成で機能するものです:

名前:Android Lint Parser

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

グルーヴィーなスクリプト:

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);
于 2012-01-27T18:01:21.663 に答える
0

一部のバージョンのコンパイル警告プラグインでは、regexp と groovy スクリプトを使用してジェンキンスの構成サイトからパーサーを作成できます。ファイルへの出力を伴うシェル スクリプトとして実行する lint 用に 1 つ作成しました。

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

グルーヴィーなスクリプト:

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);
于 2012-01-11T01:18:33.307 に答える