我正在尝试将 Sonar 3.2 与 C# 项目(唯一的插件是 C# Core 和 C# FX Cop)并使用 Simple Java Runner。
它在具有单个项目的解决方案上运行良好,但是当我尝试使用具有 2 个项目的解决方案进行分析时,我总是收到以下错误:
17:01:41.775 INFO .sbbProjectModule - ------------- 分析项目1
17:01:42.055 INFO .sbProfileProvider - 选定的质量配置文件:[name=Custom C#,language=cs]
17:01:42.075 信息 nPluginsConfigurator - 配置 Maven 插件...
17:01:42.125 INFO org.sonar.INFO - 与之前的分析比较
17:01:42.155 INFO org.sonar.INFO - 比较超过 5 天 (2012-09-27)
17:01:42.175 INFO org.sonar.INFO - 比较超过 30 天 (2012-09-02)
17:01:42.215 INFO .bpSensorsExecutor - 初始化程序 ProjectFileSystemLogger...
17:01:42.215 信息 jectFileSystemLogger - 源目录:
17:01:42.215 信息 jectFileSystemLogger - $(解决方案文件夹)\Project1
17:01:42.215 INFO .bpSensorsExecutor - 初始化 ProjectFileSystemLogger 完成:0 毫秒
17:01:42.225 INFO .bpSensorsExecutor - 初始化程序 CSharpProjectInitializer...
17:01:42.225 INFO .bpSensorsExecutor - 初始化程序 CSharpProjectInitializer 完成:0 毫秒
17:01:42.255 信息 ospcpd.CpdSensor - C# 不支持检测重复代码。
总时间:8.442s
最终内存:5M/118M
线程“主”org.sonar.runner.RunnerException 中的异常:java.lang.NullPointerException
在 org.sonar.runner.Runner.delegateExecution(Runner.java:288)
在 org.sonar.runner.Runner.execute(Runner.java:151)
在 org.sonar.runner.Main.execute(Main.java:84)
在 org.sonar.runner.Main.main(Main.java:56)
引起:java.lang.NullPointerException
在 org.sonar.plugins.csharp.api.sensor.AbstractRegularCSharpSensor.assembliesFound(AbstractRegularCSharpSensor.java:101)
在 org.sonar.plugins.csharp.api.sensor.AbstractRegularCSharpSensor.shouldExecuteOnProject(AbstractRegularCSharpSensor.java:81)
在 org.sonar.plugins.csharp.api.sensor.AbstractRuleBasedCSharpSensor.shouldExecuteOnProject(AbstractRuleBasedCSharpSensor.java:48)
在 org.sonar.api.batch.BatchExtensionDictionnary.shouldKeep(BatchExtensionDictionnary.java:109)
在 org.sonar.api.batch.BatchExtensionDictionnary.getFilteredExtensions(BatchExtensionDictionnary.java:99)
在 org.sonar.api.batch.BatchExtensionDictionnary.select(BatchExtensionDictionnary.java:57)
在 org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:57)
在 org.sonar.batch.phases.Phases.execute(Phases.java:93)
在 org.sonar.batch.bootstrap.ProjectModule.doStart(ProjectModule.java:139)
在 org.sonar.batch.bootstrap.Module.start(Module.java:83)
在 org.sonar.batch.bootstrap.BatchModule.analyze(BatchModule.java:131)
在 org.sonar.batch.bootstrap.BatchModule.analyze(BatchModule.java:126)
在 org.sonar.batch.bootstrap.BatchModule.doStart(BatchModule.java:121)
在 org.sonar.batch.bootstrap.Module.start(Module.java:83)
在 org.sonar.batch.bootstrap.BootstrapModule.doStart(BootstrapModule.java:121)
在 org.sonar.batch.bootstrap.Module.start(Module.java:83)
在 org.sonar.batch.Batch.execute(Batch.java:104)
在 org.sonar.runner.internal.batch.Launcher.executeBatch(Launcher.java:69)
在 org.sonar.runner.internal.batch.Launcher.execute(Launcher.java:61)
在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
在 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源)
在 java.lang.reflect.Method.invoke(未知来源)
在 org.sonar.runner.Runner.delegateExecution(Runner.java:285)
... 3 更多
解决方案文件夹包含以下 sonar-project.properties:
# 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
该解决方案只有这两个项目。
我尝试在每个项目的 sonar-project.properties 中添加模块配置,只需:
# Project identification
sonar.projectName=Project 1
对于我使用的单个项目,我有:
# Project identification
sonar.projectKey=com.Project1
sonar.projectVersion=1.0
sonar.projectName=Project 1
# Info required for Sonar
sonar.sources=.
sonar.language=cs
我觉得我错过了一些非常简单的东西,但我找不到太多关于此的信息。
如果有人可以帮我解决这个问题,我还有一个问题:你能分析 C++ 和 C# 项目的混合解决方案吗?
谢谢