[GitHub] SonarQube no reporta ningún issue al analizar (Bonus: TeamCity plugin)

Hace algunas semanas notamos que estaba pasando algo extraño con SonarQube y nuestros proyectos desarrollados en C#, ese algo era que todos nuestros proyectos estaban en A, verdecitos, libres de polvo y paja, sin nada que olía mal; inicialmente pensé que el equipo de desarrollo lo estaba haciendo excelente, hasta que desafortunadamente nos dimos cuenta que el origen de tan pulcro dashboard, era más bien, un problema de incompatibilidad.

En Cignium hemos venido utilizado SonarQube desde su versión 5.6 (actualmente utilizamos la última versión: 6.5); pero en el transcurso de estas actualizaciones también se han venido actualizando los plugins que permiten analizar determinados tipos de lenguajes, y en específico, SonarC# (el plugin para el análisis de código escrito en C#).
SonarC# ha ido evolucionando, con mejoras de performance y nuevas reglas, y a partir de su versión 6.0 ha dejado sin soporte a proyectos que compilen en una versión inferior a MSBuild14, y también, a aquellos que utilizan SonarQube Scanner (la herramienta genérica para correr los análisis, el que nosotros veníamos utilizando ☹) puedes encontrar más información aquí.

Apenas nos dimos cuenta, decidimos hacer un downgrade a una versión de SonarC# que nos diera soporte para SonarQube Scanner, entonces regresamos a la versión 5.10.1 de SonarC#.

La triste historia

Hasta este punto, nosotros estabamos realizando los análisis de código como parte del proceso de build, dentro de nuestro servidor de integración: TeamCity, y para ello utilizabamos el plugin oficial que nos brindaba TeamCity para su integración con SonarQube; sin embargo, este plugin tiene el problema de compatibilidad con SonarC# 6+. De hecho, SonarC# te obliga recomienda analizar a través de SonarQube Scanner for MSBuild, una herramienta alternativa al genérico SonarQube Scanner, que se dió como resultado de una colaboración entre SonarSource y Microsoft, y que se ha vuelto requerida si quieres utilizar el SonarC# en una versión igual o superior a la 6.
Sin otra alternativa, decidimos dejar de utilizar SonarQube Scanner (conocido también como SonarQube Runner en TeamCity) y empezar con SonarQube Scanner for MSBuild. Empezamos descargando el SonarQube Scanner for MSBuild y haciendo pruebas por línea de comandos; y luego de afinar varios aspectos, finalmente teníamos funcionando SonarQube con SonarC# 6.4 en TeamCity.1

Bonus

No he explicado la solución en detalle porque en el transcurso, decidimos crear un Plugin de TeamCity que hiciera esta configuración por nosotros, y poder realizar la nueva integración de una forma más rápida y limpia en todos nuestros proyectos en TeamCity.
Hoy, me hace muy feliz contarles que hemos hecho open-source este plugin para toda la comunidad :-), pueden revisar el fuente, artefacto, cómo instalarlo y utilizarlo en la página de GitHub. Les agradecezco por adelantado por su feedback y comentarios.

Renzo

  1. Si no me gana el tiempo, trataré escribir otro post respecto a las consideraciones que hay que tener para utilizar SonarQube Scanner for MSBuild, que son varias.

Renzo Robles

Los días son buenos cuando tienen código, café y salsa.

Perú