gpt4 book ai didi

c# - 使用 Simple Java Runner 的具有多个模块的 Sonar C# 项目

转载 作者:行者123 更新时间:2023-11-30 21:03:49 26 4
gpt4 key购买 nike

我正在使用 C# 项目(唯一的插件是 C# Core 和 C# FX Cop)尝试 Sonar 3.2,并使用 Simple Java Runner。

它在单个项目的解决方案上运行良好,但是当我尝试使用具有 2 个项目的解决方案进行分析时,我总是会收到以下错误:

    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

The solution folder contains the following 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

解决方案只有这 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# 项目的混合解决方案吗?

谢谢

最佳答案

C# 插件内置了对多模块的支持,您不需要(也不应该)指定:

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”。

C# 插件依靠 SLN 文件自动发现模块。看看 our sample application ,并用单个“sonar-project.properties”文件替换 Maven POM。

关于c# - 使用 Simple Java Runner 的具有多个模块的 Sonar C# 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12695651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com