objetos - ¿Cómo configuramos Android Studio para ejecutar su pelusa en cada compilación?
items desordenados android studio (4)
Crear perfil de inspección para Android Lint
- Vaya a Archivo -> Configuración -> Editor / Inspección
- Seleccione Administrar -> Copiar
- Déle el nombre "Perfil de pelusa de Android" y presione Entrar
- 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 a través de Analizar-> Inspeccionar código ... seleccionando "Perfil de Android Lint".
En el siguiente paso, grabemos Macro (Editar-> Macros-> Iniciar grabación de macro) con los siguientes pasos.
- Analizar-> Inspeccionar código ...
- Seleccione "Perfil de pelusa de Android"
- Presione Entrar (es importante usar el teclado porque la grabadora de macros no capta 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 macros 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 acceso directo.
Ahora se ejecutará pelusa antes de cada compilación cuando presione Mayús + F10 y los resultados estarán en el panel de Android Studio.
Pero esta solución tiene un gran inconveniente. Si ejecuta su compilación haciendo clic en el botón Ejecutar, no se ejecutará el análisis de pelusas.
Puede ser que esta información sea útil y alguien proporcionará una mejor solución para usarla.
Érase una vez, particularmente en Eclipse-land, Lint se ejecutaba en cada construcció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 como Lint no se ejecuta realmente, los recién llegados no se enteran de ellos.
(IOW, si una prueba de pelusa no se ejecutó en un bosque, ¿hay realmente una prueba de pelusa?)
Los comentarios en esta publicación de blog muestran cómo hacer que Lint se ejecute como parte de una compilación:
- Edite la configuración del proyecto
- En la pestaña General de la configuración, desplácese hacia abajo y abra el panel "Antes del inicio"
-
En ese panel, agregue un paso a "Ejecutar tarea de Gradle" llamado
lint
para su módulo
Sin embargo, esto ejecuta la línea de comandos Lint, lo que genera informes escritos en XML y HTML en su disco duro. Eso funciona, pero sería más limpio que Android Studio ejecute sus comprobaciones de pelusa en IDE, por lo que los resultados se muestran en un panel IDE.
¿Hay alguna manera de configurar una compilación de proyecto para realizar las comprobaciones de pelusa en IDE?
Puntos de bonificación si se puede configurar para ejecutar solo Lint, no el análisis completo realizado por Analizar> Inspeccionar código. Si bien el análisis completo ocasionalmente es útil, Lint es lo suficientemente lento como es, y mucho menos el otro análisis dudosamente útil realizado por Android Studio (por ejemplo, el corrector ortográfico).
Si bien configurar esto no sería un gran plan para todos los proyectos (los escaneos de pelusas son lentos), para los recién llegados a Android, podría ser un movimiento apropiado.
Logré esto previamente agregando un gancho de git previo al empuje que ejecutaría pelusa automáticamente al empujar, y no empujaría si se encontraran errores de pelusa. El script de gancho previo a la inserción se almacenó en el repositorio de proyectos de Android y se instaló automáticamente en la máquina local de un usuario a través de Gradle.
install-git-hooks.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 su aplicación build.gradle
apply from: rootProject.file(''gradle/install-git-hooks.gradle'')
pre-empuje
#!/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
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 desde 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 hacer todo.
Enlaces
Código fuente en github
Lint debería ejecutarse en Android Studio a menos que lo haya configurado para que esté desactivado a través de lintOptions en su archivo build.gradle .
Aquí está la documentación que se encuentra en http://developer.android.com/tools/debugging/improving-w-lint.html#studio
En Android Studio, las inspecciones de pelusa e IDE configuradas se ejecutan automáticamente cada vez que crea su aplicación. Las inspecciones 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, use el menú 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 pelusas 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 el menú contextual, seleccione Analizar> Inspeccionar código . Aparece el cuadro de diálogo Especificar alcance de inspección para que pueda especificar el alcance y el perfil de inspección deseados.
Aquí hay otras opciones de pelusa que puede agregar a su bloque lintOptions 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 la pelusa de Android: http://developer.android.com/tools/help/lint.html
Solía ser que podría agregar tareas de gradle después de ciertas acciones en Android Studio.
- Abra la pestaña Gradle en el lado derecho de la pantalla
- Selecciona tu tarea
- Haga clic derecho en la tarea
- Elige tu acción de ejecución
Esto debería ejecutar la tarea cuando se ha programado su ejecución.