CommonsWare
Érase una vez, particularmente en Eclipse-land, Lint se ejecutaría en cada compilación, por lo que si fallaba en las comprobaciones de Lint, lo descubriría de inmediato. Con Android Studio (probado en 1.3), Lint no se ejecuta de forma predeterminada en una compilación. Los recién llegados pueden cometer errores que Lint verificaría, pero dado que Lint en realidad no se ejecuta, los recién llegados no se enteran de ellos.
(IOW, si una prueba de Lint no se ejecutó en un bosque, ¿realmente hay una prueba de Lint?)
Comentarios sobre esta entrada de blog muestra cómo hacer que Lint se ejecute como parte de una compilación:
- Editar la configuración del proyecto
- En la pestaña General de la configuración, desplácese hacia abajo y abra el panel “Antes del lanzamiento”
- En ese panel, agregue un paso a “Ejecutar tarea de Gradle” llamado
lint
para tu modulo
Sin embargo, esto ejecuta la línea de comandos Lint, lo que da como resultado informes escritos en XML y HTML en su disco duro. Eso funciona, pero sería más limpio que Android Studio ejecutara sus verificaciones Lint en IDE, de modo que los resultados se muestren en un panel IDE.
¿Hay alguna manera de configurar una compilación de proyecto para realizar las comprobaciones de Lint en IDE?
Puntos de bonificación si se pudiera configurar para solamente ejecuta Lint, no el análisis completo realizado por Analizar > Inspeccionar código. Si bien el análisis completo es ocasionalmente útil, Lint es lo suficientemente lento, por no hablar de los otros análisis de dudosa utilidad realizados por Android Studio (por ejemplo, la revisión ortográfica).
Si bien configurar esto no sería un gran plan para todos los proyectos (los escaneos de Lint son lentos), para los recién llegados a Android, podría ser un movimiento apropiado.
Cazador de rayos
Hilas debería estar corriendo Estudio Android a menos que lo haya configurado para que esté apagado a través del lintOptions en tus construir.gradle expediente.
Aquí está de la documentación encontrada en http://developer.android.com/tools/debugging/improving-w-lint.html#studio
En Android Studio, las inspecciones de IDE y Lint configuradas se ejecutan automáticamente cada vez que crea su aplicación. Las inspecciones de IDE se configuran junto con las comprobaciones de pelusa para ejecutar inspecciones de código IntelliJ para agilizar la revisión de código.
Nota: Para ver y modificar los niveles de gravedad de la inspección, utilice el Archivo > Configuración > Configuración del proyecto para abrir la página Configuración de inspección con una lista de las inspecciones admitidas.
Con Android Studio, también puede ejecutar inspecciones de lint para una variante de compilación específica o para todas las variantes de compilación desde el archivo build.gradle. Agregue la propiedad lintOptions a la configuración de Android en el archivo de compilación. Este fragmento de código de un archivo de compilación de Gradle muestra cómo establecer la opción silenciosa en verdadero y la opción abortOnError en falso.
android { lintOptions { // set to true to turn off analysis progress reporting by lint quiet true // if true, stop the gradle build if errors are found abortOnError false // if true, only report errors ignoreWarnings true } ... }
Para ejecutar inspecciones manualmente en Android Studio, desde la aplicación o desde el menú contextual, seleccione Analizar > Inspeccionar código. Aparece el cuadro de diálogo Especificar el alcance de las inspecciones para que pueda especificar el alcance y el perfil de inspección deseados.
Aquí hay otras opciones de pelusa que puede agregar a su lintOptions block en su archivo gradle build.gradle: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Lint-support
Aquí hay más información sobre Android lint: http://developer.android.com/tools/help/lint.html
Solía ser que podía agregar tareas de Gradle después de ciertas acciones en el estudio de Android.
- Abra la pestaña Gradle en el lado derecho de la pantalla
- Selecciona tu tarea
- Haga clic derecho en la tarea
- Elija su acción de ejecución
Esto debería ejecutar la tarea cuando se haya programado para su ejecución.
-
“Lint debería estar ejecutándose en Android Studio a menos que lo hayas configurado para que esté desactivado a través de lintOptions en tu archivo build.gradle” — AFAICT, esto no ha sido cierto durante meses, razón por la cual publiqué la pregunta en primer lugar.
– CommonsWare
22 de septiembre de 2015 a las 10:52
-
@CommonsWare tiene razón. Esto no ha sido cierto durante meses. Tuve un error de pelusa que rompió la compilación y tuve que ignorar ese error específico hasta que lo solucioné. Después de un tiempo, eliminé la línea de ignorar de build.gradle sin corregir el error y simplemente comenzó la compilación. Parece que en alguna versión del complemento Android Gradle eliminaron la dependencia del trabajo de pelusa.
– Yoel Gluschnaider
15 de enero de 2016 a las 11:51
-
Pude agregar una dependencia entre ensamblar y pelusa haciendo que se ejecute pelusa al iniciar desde Android Studio. Mira mi respuesta a esta pregunta: stackoverflow.com/questions/22850333/…
– Yoel Gluschnaider
15 de enero de 2016 a las 15:23
Logré esto anteriormente agregando un gancho de git previo a la inserción que ejecutaría lint automáticamente en la inserción y fallaría si se encontraran errores de Lint. El script de gancho previo a la inserción se almacenó en el repositorio del proyecto de Android y se instaló en la máquina local de un usuario automáticamente a través de gradle.
instalar-git-ganchos.gradle
def hookDest = new File("${rootProject.rootDir}/.git/hooks/pre-push")
def prePushHook = new File("${rootProject.rootDir}/pre-push")
task installGitHooksTask(type: Copy) {
hookDest.delete()
hookDest << prePushHook.text
}
task gitExecutableHooks() {
Runtime.getRuntime().exec("chmod -R +x ${hookDest}");
println "gitExecutableHooks"
}
gitExecutableHooks.dependsOn installGitHooksTask
Que en tu aplicación build.gradle
apply from: rootProject.file('gradle/install-git-hooks.gradle')
empuje previo
#!/bin/sh
#
# This hook is for Android project git repos.
#
# You can use git config variables to customize this hook.
# -----------------------------------------------------------
# Change hooks.lintTargetDirectory to point at a non . directory
# Change hooks.lintArgs to add any custom lint arguments you prefer
# Get custom info
dirToLint=$(git config hooks.lintTargetDirectory)
lintArgs=$(git config hooks.lintArgs)
projectDir=$(git rev-parse --show-toplevel)
lintReportPath="/app/lint-report.html"
# If user has not defined a preferred directory to lint against, make it .
if [ -z "$dirToLint"]
then
dirToLint="."
fi
# Perform lint check
echo "Performing pre-commit lint check of ""$dirToLint"
./gradlew lint
lintStatus=$?
if [ $lintStatus -ne 0 ]
then
echo "Lint failure, git push aborted."
echo "Open ${projectDir}${lintReportPath} in a browser to see Lint Report"
exit 1
fi
exit $lintStatus
Crear perfil de inspección para Android Lint
- Vaya a Archivo -> Configuración -> Editor/Inspección
- Seleccione Administrar -> Copiar
- Dale el nombre “Android Lint Profile” y presiona Ingresar
- Deje marcadas solo las reglas de Android Lint en esta pestaña
Ahora puede ejecutar la inspección solo con las reglas de Android Lint mediante Analizar->Inspeccionar código… seleccionando “Perfil de Android Lint”.
En el siguiente paso, grabemos macros (Editar->Macros->Iniciar grabación de macros) con los siguientes pasos.
- Analizar->Inspeccionar código…
- Seleccione “Perfil de pelusa de Android”
- Presione Entrar (es importante para usar el teclado porque la grabadora de macros no detecta los clics del mouse en esta ventana)
- Haga clic en “Ejecutar configuración seleccionada” (botón de reproducción verde)
Detenga la grabación de la macro y asígnele el nombre “Lint and Run”.
Lo último que debe hacerse es asignar “Shift+F10” a nuestra macro. Vaya a Archivo->Configuración…->Mapa de teclas. Encuentra nuestra macro y cambia el atajo.
Ahora se ejecutará lint antes de cada compilación cuando presionas Mayús+F10 y los resultados estarán en el panel de Android Studio.
Pero esta solución tiene una grande retirarse. Si ejecuta su compilación haciendo clic en el botón Ejecutar, no se ejecutará el análisis de pelusa.
Puede ser que esta información sea útil y alguien proporcione una mejor solución al usarla.
-
Hola, IIya Tretyakov. ¿Cómo descargar el informe de errores de la aplicación actual de Android usando Android Lint?
– Triunfador
16 de agosto de 2018 a las 7:48
Roy Falk
Una solución posible (pero difícil de implementar) es escribir un complemento IDEA para hacer esto. Puede evitar esto descargando el complemento a continuación desde el repositorio o el código de github. El siguiente fragmento de código ejecutará las acciones ‘compilar’ e ‘inspeccionar código’, secuencialmente.
public class BuildAndLint extends AnAction {
public void actionPerformed(AnActionEvent e) {
String[] actions = {"CompileProject", "InspectCode"};
for(String action: actions) {
AnAction anAction = ActionManager.getInstance().getAction(action);
DataContext context = e.getDataContext();
AnActionEvent anActionEvent = new AnActionEvent(null, context, "", anAction.getTemplatePresentation(), ActionManager.getInstance(), 0);
anAction.actionPerformed(anActionEvent);
}
}
}
El código ha sido probado y funciona en Android Studio 1.3. Se abrirá una ventana para seleccionar qué inspeccionar, en lugar de hacerlo todo.
Enlaces
Código fuente en github
¿Has visto esta respuesta? stackoverflow.com/questions/22850333/…
–Matt Whetton
21 de septiembre de 2015 a las 12:57
@MattWhetton: No puedo hacer que eso haga nada útil. Es una reminiscencia de la publicación de blog que cité, donde la publicación de blog usa una “tarea Ejecutar Gradle” en lugar de “Creación consciente de Gradle”. Con “Ejecutar tarea Gradle”, al menos obtengo el informe Lint escrito en el disco. Con “Gradle-aware make”, ni siquiera entiendo eso. Ninguno proporciona la representación visual en IDE de los mensajes de Lint. ¡Gracias, sin embargo!
– CommonsWare
21 de septiembre de 2015 a las 13:20
Es extraño que nuestra compilación de Jenkins falle si no apago Lint, ¿esto significa que se está ejecutando con una compilación de Jenkins?
– Rompiendo
22 de septiembre de 2015 a las 12:46