SonarQube MSBuild Scanner no excluye archivos del análisis
Actualmente estamos usando SonarQube Scanner para VSTS / TFS 4.1.1 (que está usando SonarQube Scanner 4.1.1).
Lo que queremos hacer:Para algunos proyectos (módulos) en nuestra solución, queremos excluir archivos del análisis y de las estadísticas de cobertura de código. Esto debe hacerse de manera sostenible mediante el uso de patrones de archivo y sin modificar la tarea de compilación TFS.
Estructura del proyecto: |- Source
|- ProjectA
|- Scripts (should be excluded)
|- OwnCode
|- ProjectB
|- Views (only code coverage should be excluded)
|- Presenters
|- ...
|- ProjectC
|- Scripts (should be scanned)
|- ...
|- ...
|- Solution.sln
Lo que probamos:Excluyendo en la tarea de compilación TFSRuta absoluta (con barra invertida o barra inclinada):sonar.exclusions="$(Build.SourcesDirectory)\Source\ProjectA\Scripts\**\*.js"
(similar para la cobertura)Camino relativo:**/ProjectsA/Scripts/**/*.js
Excluyendo en SonarQube front endExclusión de análisis:**/ProjectA/Scripts/**/*.js
Exclusión de cobertura:**/ProjectB/Views/**/*.cs
Excluyendo con sonar-project.properties:No es compatible y da como resultado el siguiente error:sonar-project.properties files are not understood by the SonarScanner for MSBuild
Lo que vemosLos registros del contexto del escáner en la interfaz web de SonarQube son:
Settings for module: Solution:Solution:6FA7B5C2-667D-4387-98B9-445617F2AC0B
- sonar.coverage.exclusions=**/ProjectA/Views/**/*.cs
- sonar.cs.analyzer.projectOutPath=D:\agent1\_work\5\.sonarqube\out\9
- sonar.cs.analyzer.projectOutPaths="D:\agent1\_work\5\.sonarqube\out\9"
- sonar.cs.roslyn.reportFilePath=D:\agent1\_work\5\s\Source\Solution\Source\ProjectA\bin\Release\ProjectA.dll.RoslynCA.json
- sonar.cs.roslyn.reportFilePaths="D:\agent1\_work\5\s\Source\Solution\Source\ProjectA\bin\Release\ProjectA.dll.RoslynCA.json"
- sonar.exclusions=**/ProjectA/Scripts/**/*.js
- sonar.moduleKey=Solution:Solution:6FA7B5C2-667D-4387-98B9-445617F2AC0B
- sonar.projectBaseDir=D:\agent1\_work\5\s\Source\Solution\Source\ProjectA
- sonar.projectKey=Solution:Solution:6FA7B5C2-667D-4387-98B9-445617F2AC0B
- sonar.projectName=ProjectA
- sonar.sourceEncoding=utf-8
- sonar.sources="D:\agent1\_work\5\s\Source\Solution\Source\ProjectA\Scripts\abc.js","..."
Los registros del MSBuild Scanner en la compilación TFS son:
Base dir: D:\agent1\_work\5\s\Source\Solution\Source\ProjectA
Working dir: D:\agent1\_work\5\.sonarqube\out\.sonar\Solution_Solution_6FA7B5C2-667D-4387-98B9-445617F2AC0B
Source paths: Scripts/abc.cs, ...
Source encoding: UTF-8, default locale: en_US
Index files
Excluded sources:
**/ProjectA/Scripts/**/*.js
172 files indexed
0 files ignored because of inclusion/exclusion patterns
Quality profile for cs: Sonar way
Quality profile for js: Sonar way
Excluded sources for coverage:
**/ProjectB/Views/**/*.cs
Sensor C# Properties [csharp]
Sensor C# Properties [csharp] (done) | time=15ms
Sensor SonarJavaXmlFileSensor [java]
Sensor SonarJavaXmlFileSensor [java] (done) | time=0ms
Sensor SonarJS [javascript]
Lo que no probamos:Excluir archivos individuales cambiando los archivos del proyectoNo queremos hacer esto porque no se puede mantener.
Excluyendo todo el proyectoSolo queremos excluir algunas carpetas / patrones de proyectos individuales en la solución.