Situación actual usando SonarCloud
Si te pasa como a nosotros, que tienes bastantes proyectos y en muchos de ellos varios repositorios, puede llegar a ocurrirte que al intentar analizar un nuevo proyecto desde SonarCloud, éste no te aparezca. En nuestro caso tenemos más de 170 repositorios git, pero al recuperar los «repos» a añadir a git se quedaba en 166. De esto nos dimos cuenta porque quería realizar el análisis estático de un nuevo proyecto y no había forma de que lo detectara.
Parece que este es un error recurrente, ya que por lo que he visto en los foros de soporte de Sonar es algo que ocurre, tanto con SonarQuce como con SonarCloud, desde hace años. Tiene pinta de que lo solucionan y se vuelve a reproducir. Según los comentarios del equipo de soporte es un problema con el API de listado de repositorios de AzureDevOps. pero claro no tenemos la versión de Microsoft, por lo que no podemos saber de quien es 'la culpa'. Aunque tampoco es que nos aporte mucho saber a quien echarle la bronca.
Tras leer un montón de preguntas y respuestas en foros parecía que el problema se podía solucionar bajando el número de repositorios activos que tuviera que recuperar Sonar, pareciendo que 100 es el número mágico. Así, a bote pronto, no parecía muy lógico porque ya estaba recuperando 166, pero aprovechamos para deshabilitar todos aquellos repositorios obsoletos de proyectos antiguos o migrados y bajamos hasta 99. Viendo que ni por esas podíamos cargar en Sonar nuestro nuevo proyecto pasamos a la siguiente posible solución: realizar la carga manual.
Carga Manual
Aunque en principio no es la mejor opción, y el propio SonarCloud te recomienda cargar directamente el proyecto desde la sincronización, en esta casuística es la única solución que hemos encontrado.
A continuación mostramos los pasos para poder realizar la carga manual para el análisis de nuestro proyecto con Java y MAVEN. Es importante remarcar que son los pasos para un proyecto Java con Maven, ya que si el stack del proyecto es diferente los pasos cambiarían ligeramente.
Paso 1. Crear proyecto manualmente en SonarCloud
Acceder a New... (botón +) de la parte superior derecha y seleccionar «Analyze new proyect»
Si el repositorio a analizar no aparece en el listado se debe pinchar en «create a new project manually» a la derecha del selecor de organización.
El siguiente paso es indicar un nombre único para el proyecto y nombre que se debe utilizar para mostrarse en los listados de SonarCloud
Paso 2. Crear token de seguridad en SonarCloud
Navega a la configuración de tu cuenta en SonarCloud.
Accede a la pestaña de «Security», introduce un nombre descriptivo para el token y genera un nuevo token.
Copia el token al portapapeles.
Paso 3. Crear service connector en Azure DevOps
Vete a tu proyecto en Azure DevOps > Project settings.
Acceder a Service connections
Crear un nuevo service connection de tipo SonarCloud
Introducir el token copiado en el portapapeles y darle un nombre a service connection.
Paso 4. Crear pipeline de CI
Acceder a tu proyecto en Azure DevOps > Crear una nueva pipeline > Seleccionar Azure Repos Git > Seleccionar el repositorio a analizar > Seleccionar MAVEN
Se crea un pipeline inicial. Lo cambiaremos por el siguiente pipeline que incluye el proceso de maven para Sonar.
Debemos incluir la project key y project name creados en el momento de crear el proyecto en Sonar y en el valor de configuración de SonarCloud incluir el nombre del service connector creado anteriormente,
Guardamos la pipeline y la ejecutamos.
Al ejecutar la pipeline analizará el proyecto y ya estará configurado en Sonar.
Paso 5. Comprobar análisis inicial en Sonar
Acceder en SonarCloud a «My projects» y debes poder visualizar el análisis del proyecto.
Conclusiones
Esperamos que hayas podido la encontrar solución con estos sencillos pasos. Si utilizas SonarCloud y te interesa conocer más acerca de esta herramienta, quizá te pueda interesar este artículo: Cobertura de código con PHP usando AzureDevOps y SonarCloud.