Android Lint informe para mi proyecto sólo, excluyendo los proyectos de la biblioteca?
¿Cómo se ejecuta Android Lint por lo que sólo informa en mi módulo de proyecto, e ignora los proyectos de biblioteca que estoy usando? Incluso cuando apunto a Lint en el módulo de mi proyecto, arroja listas de problemas en los proyectos de biblioteca que no me interesan, quiero centrar mi esfuerzo en arreglar problemas en mi propio código.
No puedo ver un parámetro para especificar si sigue referencias a proyectos de biblioteca o no, pero tal vez usted puede ver cómo hacerlo.
- Lint se queja de que no se ha traducido la cadena gcm_defaultSenderId
- Cómo corregir Advertencia de pelusa de SMS BroadcastReceiver sin protección
- Uso de Twitter4j en android, obteniendo errores de pelusa en la biblioteca - Referencia de paquete no válida en la biblioteca
- Cómo solucionar esto: 'Running android lint' issue
- Lint: ¿Cómo ignorar los errores "<key> no se traduce en <language>"?
- ¿Cómo configuramos Android Studio para ejecutar su pelusa en cada compilación?
- Actividad no registrada en el manifiesto Aviso de pelusa
- Suprimir "Identificador no permitido en Android"
- Hacer tema personalizado usar fondo nulo (sugerencia de pelusa Android)
- Anotación de nivel de API de Android para bibliotecas de Android
- Ejecutar pelusa al construir proyectos de estudio de android
- ¿Por qué se considera 0dp una mejora de rendimiento?
- Recursos esperados del tipo animator
Si está utilizando Eclipse, vaya a las propiedades del proyecto de la biblioteca (haga clic con el botón derecho del ratón en el proyecto -> Propiedades) y en "Preferencias de Google Lint" haga clic en "Ignorar todo" y luego en Aceptar.
El Android SDK Tools 21.1 introdujo una característica nueva y conveniente para resolver este problema / error.
Eche un vistazo al menú de desbordamiento de Lint de Android y encontrará la opción Skip Library Project Dependencies que hará exactamente lo que está buscando.
Mi solución fue modificar la salida de pelusa para filtrar los errores de otros proyectos y las advertencias.
Hice esto con una tarea de hormiga personalizada y archivo xslt para filtrar.
Asumiendo que usted está usando hormiga para hacer sus compilaciones de android, modifique el custom_rules.xml :
<property name="lint.script" value="${sdk.dir}/tools/lint"/> <property name="lint.report" location="${basedir}/lint-results-all.xml"/> <property name="lint.project.loc" location="${basedir}"/> <target name="lint"> <!-- lint --xml lint-results-all.xml --> <exec executable="${lint.script}"> <arg value="--xml"/> <arg value="${lint.report}"/> <arg value="${lint.project.loc}"/> </exec> </target> <target name="runlint" depends="lint"> <xslt in="lint-results-all.xml" out="lint-results.xml" style="lint-cleanup.xslt" /> </target>
Luego agregué un archivo XSLT que quita los problemas para los otros proyectos: lint-cleanup.xslt.
El archivo XSLT basicallly comprueba si la ubicación del archivo NO contiene "sherlock" y luego copia a un nuevo archivo de salida. Usted puede modificar para adaptarse a sus necesidades. También puede funcionar como start-in en lugar de contiene.
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="issue"> <xsl:variable name="location_to_filter" select="'sherlock'" /> <xsl:if test="not(contains(location/@file, $location_to_filter))"> <xsl:copy-of select="."/> </xsl:if> </xsl:template> <xsl:template match="@*|node()"> <xsl:copy> <xsl:apply-templates select="@*|node()"/> </xsl:copy> </xsl:template> </xsl:stylesheet>
Para ejecutar el informe de pelusa simplemente lo agregó a la línea de comandos en mi construcción de hormigas en Jenkins.
ant clean debug runlint
Debería obtener lint-results-all.xml y un lint-results.xml (con el contenido filtrado). Yo uso esto con el complemento Jenkins Android Lint
La parte fea acerca de esta solución es que todavía corre la pelusa en el otro proyecto, por lo que perder unos ciclos cpus. También el nombre que está filtrando está en el archivo xslt, por lo que no puede escalar bien si utiliza varias bibliotecas de terceros que necesita para filtrar. Sin embargo, XSLT es lo suficientemente potente que debería ser capaz de crear fácilmente un filtro mejor según sea necesario.
Utilice lint.xml para un enfoque más general, que también funciona fuera de Eclipse. Basta con poner las bibliotecas usadas (por ejemplo, Action Bar Sherlock y Facebook) para ignorar:
<?xml version="1.0" encoding="UTF-8"?> <lint> <issue id="all"> <ignore regexp="target/classes/com/actionbarsherlock/.*" /> <ignore regexp="target/classes/com/facebook/.*" /> </issue> </lint>
Este enfoque también funciona con soluciones de CI como Jenkins.
- Mantener el estado abierto / cerrado del teclado para EditText cuando la aplicación llega al primer plano
- ¿Debo abrir () y cerrar () mi base de datos SQL constantemente o dejarla abierta?