es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Fusionando dos informes de sonar diferentes del mismo proyecto.

Tengo un proyecto heredado, que tiene más de 40 millones de líneas de código. Solo quiero configurar Sonar durante la compilación, pero cuando ejecuto Sonar con la configuración predeterminada, falla con OutOfMemoryException o TimeOutException.

Supe que esto se debe al gran tamaño del código base que tengo, así que aumenté los argumentos de memoria para utilizar 5 GB de memoria. Intenté con más memoria, pero el servidor de TeamCity no tiene suficiente memoria libre. Aún así, falló.

Finalmente, lo que hice fue construir dos pipelines, incluí un patrón de archivo particular en una de ellas usando sonar.inclusions, el resto de los archivos en la otra y separé mi código en dos pipelines diferentes. Ahora, cuando ejecuto Sonar, funciona bien y genera dos informes diferentes con claves de proyecto diferentes.

Pero mi necesidad es generar un informe único porque no puedo adjuntar dos informes en Bitbucket. Mi objetivo es mostrar el informe en Bitbucket. Si es posible obtener dos informes en un solo repositorio, eso también serviría.

¿Alguien puede ayudarme a generar un informe único aunque ejecute Sonar en múltiples pipelines en TeamCity, por favor?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Es comprensible que al ejecutar SonarQube en un código base grande pueda generar excepciones de memoria insuficiente (OutOfMemoryExceptions) o de límite de tiempo (TimeOutExceptions), especialmente con los ajustes predeterminados. Aumentar los argumentos de memoria es un enfoque, pero parece que el servidor de TeamCity ya está limitado en memoria.

    Dividir el código base en dos canalizaciones con patrones de archivos diferentes y generar informes separados con claves de proyectos diferentes es una solución válida. Sin embargo, para cumplir con el requisito de generar un único informe, se puede utilizar el API REST de SonarQube para fusionar los informes separados.

    Para hacer esto, necesitará obtener los archivos de informe de análisis generados por ambas canalizaciones. Luego, puede utilizar el punto de conexión POST api/ce/task/merge del API web de SonarQube para fusionar los informes. Esto creará un proyecto nuevo en SonarQube con un informe fusionado.

    Una vez que se haya generado un informe único, aún puede configurar la integración con Bitbucket para informar sobre ese proyecto. Puede configurar SonarQube para enviar los resultados de análisis a Bitbucket utilizando el complemento de Bitbucket Cloud o Bitbucket Server.

    Alternativamente, en lugar de fusionar informes en SonarQube, podría considerar el uso de una herramienta de terceros como SonarLint para unir los resultados de varios análisis. SonarLint le permite analizar código en varios lenguajes y visualizar los problemas detectados en varios proyectos. Esto podría proporcionar una visión más completa de su código base en sus diferentes canalizaciones.

Comments are closed.