Projet Sonar C # avec plusieurs modules à l'aide du coureur Java simple
-
12-12-2019 - |
Question
J'essaie Sonar 3.2 avec des projets C # (les seuls plugins sont C # CORE et C # FX COP) et en utilisant le simple coureur Java.
Cela a fonctionné bien sur une solution avec un seul projet, mais lorsque j'ai essayé d'analyser en utilisant une solution avec 2 projets, je reçois toujours l'erreur suivante:
17:01:41.775 INFO .s.b.b.ProjectModule - ------------- Analyzing Project1 17:01:42.055 INFO .s.b.ProfileProvider - Selected quality profile : [name=Custom C#,language=cs] 17:01:42.075 INFO nPluginsConfigurator - Configure maven plugins... 17:01:42.125 INFO org.sonar.INFO - Compare to previous analysis 17:01:42.155 INFO org.sonar.INFO - Compare over 5 days (2012-09-27) 17:01:42.175 INFO org.sonar.INFO - Compare over 30 days (2012-09-02) 17:01:42.215 INFO .b.p.SensorsExecutor - Initializer ProjectFileSystemLogger... 17:01:42.215 INFO jectFileSystemLogger - Source directories: 17:01:42.215 INFO jectFileSystemLogger - $(Solution folder)\Project1 17:01:42.215 INFO .b.p.SensorsExecutor - Initializer ProjectFileSystemLogger done: 0 ms 17:01:42.225 INFO .b.p.SensorsExecutor - Initializer CSharpProjectInitializer... 17:01:42.225 INFO .b.p.SensorsExecutor - Initializer CSharpProjectInitializer done: 0 ms 17:01:42.255 INFO o.s.p.cpd.CpdSensor - Detection of duplicated code is not supported for C#. Total time: 8.442s Final Memory: 5M/118M Exception in thread "main" org.sonar.runner.RunnerException: java.lang.NullPointerException at org.sonar.runner.Runner.delegateExecution(Runner.java:288) at org.sonar.runner.Runner.execute(Runner.java:151) at org.sonar.runner.Main.execute(Main.java:84) at org.sonar.runner.Main.main(Main.java:56) Caused by: java.lang.NullPointerException at org.sonar.plugins.csharp.api.sensor.AbstractRegularCSharpSensor.assembliesFound(AbstractRegularCSharpSensor.java:101) at org.sonar.plugins.csharp.api.sensor.AbstractRegularCSharpSensor.shouldExecuteOnProject(AbstractRegularCSharpSensor.java:81) at org.sonar.plugins.csharp.api.sensor.AbstractRuleBasedCSharpSensor.shouldExecuteOnProject(AbstractRuleBasedCSharpSensor.java:48) at org.sonar.api.batch.BatchExtensionDictionnary.shouldKeep(BatchExtensionDictionnary.java:109) at org.sonar.api.batch.BatchExtensionDictionnary.getFilteredExtensions(BatchExtensionDictionnary.java:99) at org.sonar.api.batch.BatchExtensionDictionnary.select(BatchExtensionDictionnary.java:57) at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:57) at org.sonar.batch.phases.Phases.execute(Phases.java:93) at org.sonar.batch.bootstrap.ProjectModule.doStart(ProjectModule.java:139) at org.sonar.batch.bootstrap.Module.start(Module.java:83) at org.sonar.batch.bootstrap.BatchModule.analyze(BatchModule.java:131) at org.sonar.batch.bootstrap.BatchModule.analyze(BatchModule.java:126) at org.sonar.batch.bootstrap.BatchModule.doStart(BatchModule.java:121) at org.sonar.batch.bootstrap.Module.start(Module.java:83) at org.sonar.batch.bootstrap.BootstrapModule.doStart(BootstrapModule.java:121) at org.sonar.batch.bootstrap.Module.start(Module.java:83) at org.sonar.batch.Batch.execute(Batch.java:104) at org.sonar.runner.internal.batch.Launcher.executeBatch(Launcher.java:69) at org.sonar.runner.internal.batch.Launcher.execute(Launcher.java:61) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.sonar.runner.Runner.delegateExecution(Runner.java:285) ... 3 more
Le dossier de la solution contient les Sonar-Project.Properties suivants:
# Project identification
sonar.projectKey=com.project.btg
sonar.projectVersion=1.0
sonar.projectName=BTG
# Info required for Sonar
sonar.sources=.
sonar.language=cs
sonar.dotnet.visualstudio.solution.file=Sonar.project.sln
sonar.dotnet.buildPlatform=x86
sonar.dotnet.buildConfiguration=Debug
sonar.modules=Project1,Project2
#modules specific configuration
Project1:sonar.sources=.\Project1
Project1:sonar.projectName=Project 1
Project2:sonar.sources=.\Project2
Project2:sonar.sources=Project 2
La solution n'a que 2 projets.
J'ai essayé d'ajouter la configuration des modules dans une Sonar-Project.properties pour chaque projet avec juste:
# Project identification
sonar.projectName=Project 1
Pour le projet unique que j'ai utilisé, j'avais:
# Project identification
sonar.projectKey=com.Project1
sonar.projectVersion=1.0
sonar.projectName=Project 1
# Info required for Sonar
sonar.sources=.
sonar.language=cs
Je pense que je manque quelque chose de très simple, mais je ne pouvais pas trouver beaucoup d'informations à ce sujet.
Si quelqu'un peut m'aider avec cela, j'ai une question supplémentaire: Pouvez-vous analyser une solution hybride de projet C ++ et C #?
merci
La solution
Le support de Multi-Module est intégré pour les plugins C #, vous
sonar.modules=Project1,Project2
#modules specific configuration
Project1:sonar.sources=.\Project1
Project1:sonar.projectName=Project 1
Project2:sonar.sources=.\Project2
Project2:sonar.sources=Project 2
, ni ajouter de "sonar-project.properties" à chaque module.
Les plugins C # s'appuient sur le fichier SLN pour découvrir automatiquement les modules. Jetez un coup d'oeil à Notre exemple d'application et remplacez simplement le fichier Maven Pom par un seul fichier" Sonar-Project.Properties ".