Aplicación de coding style y advertencia y sin pelusas entre los equipos de Android Studio o git / github

Me gustaría configurar nuestro proyecto de una manera que garantice que el coding style y la advertencia y la ausencia de pelusa se apliquen para los checkins. También me gustaría que sea muy fácil para los desarrolladores ver cuando no están en conformidad.

Idealmente, esto se presentaría desde Android Studio (todos nuestros desarrolladores usan el mismo IDE) cuando edite un file o ejecute una compilation. Además, sería bueno tener esta aplicación "simplemente funciona" cuando un desarrollador clona el repository, en lugar de requerir una configuration manual adicional.

¿Cuál es la forma más limpia de hacer esto?

Los analizadores de código estático como Checkstyle , FindBugs y PMD pueden ayudarlo.
Se pueden configurar para usar con Gradle y Android Studio con la ayuda de estos scripts . Si algo falla según las configuraciones de los analizadores, la compilation fallará.

Como estos scrips están integrados con Gradle, pueden comprometerse con el repository y funcionarán cuando el desarrollador lo clone.

Lamentablemente, los informes generados no están integrados con Android Studio, por lo que es una mejor forma de generar y ejecutar comprobaciones desde la console mediante el uso de gradle wrapper. Las tareas de los analizadores estáticos están configuradas para depender de la tarea de check , por ./gradlew check command ./gradlew check ejecutará todas.

Los informes se encuentran en el directory $project.buildDir/reports , pero también se pueden modificar.

Las configuraciones Checkstyle son muy flexibles. Se pueden configurar a cualquier estilo de código que prefiera. Por ejemplo, Google Java Code Checkstyle config .

PMD tiene un set de reglas para ejecutar comprobaciones sobre su código. También tiene reglas de Android . Aquí hay una guía sobre cómo hacer una configuration de set de reglas para PMD .

FindBugs te ayuda a encontrar errores comunes en el código de Java. Por ejemplo, detecta la concatenación de múltiples cadenas usando + y sugiere usar StringBuilder. Se puede configurar con files de filter .

Además, no apague el control de pelusas del siguiente modo:

 lintOptions { abortOnError false } 

Una forma mejor es desactivar comprobaciones específicas si no te gustan, por ejemplo:

 lintOptions { disable 'InvalidPackage' }