Sonarqube 无法运行声纳

Sonarqube 无法运行声纳,sonarqube,sonar-runner,Sonarqube,Sonar Runner,我正在尝试使用声纳分析我的解决方案(C#NET)。不幸的是,在加载插件后,它失败了,原因如下: 14:53:19.646 DEBUG - Release semaphore on project : org.sonar.api.resources.Project@7f9b2bab[id=3169,key=com.exigenservices:cm,qualifier=TRK], with key batch-com.exigenservices:cm INFO: ----------------

我正在尝试使用声纳分析我的解决方案(C#NET)。不幸的是,在加载插件后,它失败了,原因如下:

14:53:19.646 DEBUG - Release semaphore on project : org.sonar.api.resources.Project@7f9b2bab[id=3169,key=com.exigenservices:cm,qualifier=TRK], with key batch-com.exigenservices:cm
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
Total time: 2:12.629s
Final Memory: 13M/405M
ERROR: Error during Sonar runner execution
INFO: ------------------------------------------------------------------------
org.sonar.runner.impl.RunnerException: Unable to execute Sonar
   at org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91)
   at org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75)
   at java.security.AccessController.doPrivileged(Native Method)
   at org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69)
   at org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50)
   at org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102)
   at org.sonar.runner.api.Runner.execute(Runner.java:90)
   at org.sonar.runner.Main.executeTask(Main.java:70)
   at org.sonar.runner.Main.execute(Main.java:59)
   at org.sonar.runner.Main.main(Main.java:41)
Caused by: java.util.NoSuchElementException
   at java.util.HashMap$HashIterator.nextEntry(HashMap.java:929)
   at java.util.HashMap$ValueIterator.next(HashMap.java:954)
   at org.sonar.dotnet.tools.commons.visualstudio.VisualStudioProject.getArtifactDirectory(VisualStudioProject.java:178)
   at org.sonar.dotnet.tools.commons.visualstudio.VisualStudioProject.getArtifact(VisualStudioProject.java:195)
   at org.sonar.dotnet.tools.commons.visualstudio.VisualStudioProject.getGeneratedAssemblies(VisualStudioProject.java:209)
   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.batch.bootstrap.BatchExtensionDictionnary.shouldKeep(BatchExtensionDictionnary.java:62)
   at org.sonar.batch.bootstrap.BatchExtensionDictionnary.getFilteredExtensions(BatchExtensionDictionnary.java:52)
   at org.sonar.batch.bootstrap.BatchExtensionDictionnary.select(BatchExtensionDictionnary.java:42)
   at org.sonar.batch.phases.SensorsExecutor.execute(SensorsExecutor.java:63)
   at org.sonar.batch.phases.PhaseExecutor.execute(PhaseExecutor.java:114)
   at org.sonar.batch.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:150)
实际上,在sonar缓存(
.sonar
)目录中提供了以下插件:

checkstyle
core
cpd
csharp
csharpfxcop
csharpgallio
csharpgendarme
csharpndeps
csharpsquid
csharpstylecop
dbcleaner
design
emailnotifications
findbugs
jacoco
java
l10nen
mavenbatch
pmd
squidjava
surefire

不幸的是,我不知道如何修复它,以及由于sonar调试消息不足而导致的问题在哪里。

这意味着您的项目的CSPROJ文件不正确,并且缺少有关生成程序集的工件目录的一些信息。

SonarQube的.Net插件中的Visual Studio项目解析器要使用此xpath查找输出文件,请执行以下操作:

"/vst:Project/vst:PropertyGroup[contains(@Condition,'" + config + "')]/vst:OutputPath"
其中
config
是它确定应该使用的构建配置

通过查看和您提供的异常堆栈跟踪(没有完全对齐),我可以看出,异常是在这一行抛出的:

  if (artifactDirectory == null) {
    // just take the first one found...
    artifactDirectory = buildConfOutputDirMap.values().iterator().next();
这意味着它找不到项目的任何生成输出


如果您发现您的csproj文件的OutputPath位置不同,请向提交一份错误报告,以便将来可以修复。

谢谢您的提示,但您可以解释sonar希望从
csproj
文件中获得哪个xpath(以及在哪个命名空间中)?我在想问题出在哪里。我的项目文件有OutputPath,有XML头,有根元素,看起来像
。它还有
OutputPath
PropertyGroup
内部,条件是
condition=“'$(配置)|$(平台)=='Debug | AnyCPU'”
。您能编辑您的问题并复制粘贴CSPROJ文件的开头吗?(其中列出了所有属性)