Gradle, Sonar e Informes de cobertura (Jacoco)

Para un proyecto java simple.

El análisis estático de SonarQube se lanza desde Jenkins.

sonar-project.properties:

sonar.projectKey=com.sourcerebels:some_project
sonar.projectName=SomeProject
sonar.projectVersion=1.0
sonar.language=java
sonar.sources=src/main/java
sonar.tests=src/test/java
sonar.java.binaries=build/classes/main
sonar.jacoco.reportPaths=build/jacoco/test.exec

build.gradle

apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'jacoco'

mainClassName = "SomeProject"
sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    jcenter()
    mavenCentral()
}

dependencies {
    testCompile 'junit:junit:4.12'
    testCompile 'org.mockito:mockito-core:2.7.16'
}

Configuración Checkstyle Google Checks

Instalar plugin “CheckStyle-IDEA”

  • En Android Studio o IntelliJ abrir la opción de menú “File” -> “Settings”.
  • Allí, localizar el apartado “plugins”.
  • Buscar e instalar el plugin “CheckStyle-IDEA”.
  • Reiniciar el IDE cuando lo solicite.

Configurar Google Checks

  • Volver a abrir la vista de “Settings”.
  • Allí, localizar el apartado “Other Settings -> Checkstyle”.
  • Añadir un nuevo fichero de configuración haciendo click en el botón con el símbolo “+” correspondiente.
  • Seleccionar el checkbox correspondiente para activar la configuración.

Captura de pantalla de 2016-04-09 21-00-04

Finalmente, el fichero se puede localizar on-line en las direcciones.

Fichero para la última versión de checkstyle (no recomendable instalar ya que puede ser que tengas una versión anterior)

https://raw.githubusercontent.com/checkstyle/checkstyle/master/src/main/resources/google_checks.xml

Fichero para una versión en concreto de checkstyle (6.17)

https://github.com/checkstyle/checkstyle/blob/checkstyle-6.17/src/main/resources/google_checks.xml

Las diferentes versiones se pueden encontrar marcadas con tags en el repositorio de Checkstyle.

SonarQube

Para poder analizar un proyecto Android con la herramienta sonarqube tuve que modificar el fichero build.gradle añadiendo las siguientes líneas:

buildscript {
  repositories {
    ...
    maven { url "https://plugins.gradle.org/m2/" } 
  }
  dependencies {
    ...
    classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:1.2"
  }
}

apply plugin: 'org.sonarqube'

sonarqube {
  properties {
    ...
    property "sonar.projectName", "Mi aplicación"
    property "sonar.host.url", "http://url_de_sonarqube"
    properties["sonar.sources"] += "src"
  }
}