2012-01-05 7 views
5

¿Cómo puedo visualizar los resultados de Android Lint en Jenkins, p. como advertencias? Quiero navegar por las advertencias de la GUI de Jenkins, al igual que las advertencias del compilador y las advertencias de PMD/Checkstyle.Mostrar los resultados de Android Lint en Jenkins

La salida del trabajo de Jenkins es algo como esto:

[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 pelusa puede crear un archivo XML también, pero me temo que no hay Jenkins Plugin capaz de analizar el archivo. ¿O me estoy perdiendo algo?

+2

Sí, es difícil ya que el formato XML de Lint no es compatible con otras herramientas Java similares. He estado trabajando en un plugin de Jenkins para analizar los resultados de Lint. –

+0

Christopher, un complemento de Android Lint para Jenkins sería muy útil. De todos modos, con la ayuda de Pavol resolví mi problema. Publique un comentario cuando el complemento esté disponible para la prueba. ¡Gracias! – stefan222

Respuesta

3

Pavol, muchas gracias por su inspiración! Lamentablemente, su script de expresión regular no funciona para mí, pero fue un muy buen punto de partida para nuevas investigaciones. Esto es lo que funciona para mi configuración:

Nombre: Android Lint Parser

Regexp: ([^\s]*:)?([^ ]*):\s+(.*)\[(.*)\]$

guión maravilloso:

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

En el plugin compile warnings de alguna versión puede crear el analizador desde el sitio de configuración de jenkins usando regexp y groovy script. Creé uno para la pelusa que ejecuté como script de shell con salida a algún archivo.

Regexp: ^\s*([^ ]*): ([^ ]*):\s*(.*)\[(.*)\]$

guión maravilloso:

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

Jenkins tiene ahora la Android Lint Plugin, si estás usando herramientas SDK r17 o mas nuevo.

Esto analizará Lint XML y mostrará los resultados en el mismo estilo que otros complementos de análisis estático para Jenkins.

+1

Uso este complemento, es perfecto para el trabajo. Gracias. –

+0

Traté de usar este complemento también, pero no recoge los resultados de la pelusa (ver http://stackoverflow.com/questions/12716150/jenkins-lint-plugin-not-picking-up-results) - cualquier consejo sobre qué podría estar equivocado? –

Cuestiones relacionadas