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.

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.

Introduzca aquí la descripción de la imagen

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.

  • ¿Cómo dirigir la queja de la pelusa del android sobre las implementaciones exportadas del servicio de la mensajería de Firebase?
  • ¿Qué es "android: allowBackup"?
  • Herramienta Lint de Android SDK Ignorar las nuevas advertencias de API
  • @IntDef anotación y devolver valor de otro código que no se puede anotar o cómo desactivar temporalmente la anotación de afectar el código?
  • Esta clase de controlador debe ser estática o pueden producirse fugas: IncomingHandler
  • Escribir advertencia de pelusa personalizada para comprobar anotaciones personalizadas
  • ¿Cómo el ajuste baselineAligned a false mejora el rendimiento en LinearLayout?
  • Cómo detectar errores de variables de recursos en Android Studio (por ejemplo: "% 1 $ s")
  • Contenido de Android
  • ¿Utilizando FloatMath o Math y un yeso?
  • Cómo reactivar una advertencia de Android Lint deshabilitada en el nivel de archivo
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.