Entorno : Estamos creando código C# dentro de Visual Studio 2015 y generando un informe de CodeAnalysis utilizando el conjunto de reglas predeterminado disponible dentro de Visual Studio 2015.
Declaración del problema : al ejecutar el mismo código en SonarQube integrado con nuestro entorno de integración continua Jenkins, obtenemos un informe de análisis de código diferente, por lo que queremos importar el conjunto de reglas predeterminado de Visual Studio 2015 para usar dentro de SonarQube 5.6 o posterior ( Estoy listo para actualice Sonar si hay una solución ). Pero el problema es que SonarQube no puede reconocer el conjunto de reglas que comienza con CS , como...
<Rules AnalyzerId="Microsoft.CodeAnalysis.CSharp" RuleNamespace="Microsoft.CodeAnalysis.CSharp"> <Rule Id="AD0001" Action="Error" /> <Rule Id="CS0028" Action="Error" /> <Rule Id="CS0078" Action="Error" /> <Rule Id="CS0105" Action="Error" /> <Rule Id="CS0108" Action="Error" /> <Rule Id="CS0109" Action="Error" />Ya tengo los siguientes complementos instalados:
Respuesta corta: no hay una forma compatible de hacer esto. Pero puedes intentar hackear un poco para resolver esto.
Respuesta larga
Hay varios problemas que tendrías que resolver:
CoreCompile en msbuild a través del parámetro del conjunto de ruleset . Entonces, incluso si creaste uno propio, eso se eliminaría de los parámetros y se cambiaría al de Sonar.CS* . Por el momento no creo que haya una solución fácil a estos problemas. La sugerencia general sería crear su complemento SQ, que define todas las reglas de CS* . Obtenga estas reglas en el archivo de conjunto de reglas (probablemente entre la fase de inicio y la de compilación), analice el archivo json de salida y envíe los resultados al servidor. Esto funcionaría, pero es una tarea bastante grande, y hay muchos lugares donde esto puede volverse loco.
Otro enfoque es echar un vistazo al SDK de SonarQube Roslyn . Este SDK le permite crear un complemento de SonarQube a partir de los analizadores nuget de Roslyn. Si crea un complemento de este tipo, verá que tiene 2-3 archivos XML incrustados. Estos archivos describen las reglas del complemento. Para apoyar su caso yo:
CS* . Probablemente no sea tan fácil obtener una lista de todas las reglas de CS* , pero este podría ser un buen comienzo.