【问题标题】:exclude project from solution when running sonar-runner运行 sonar-runner 时从解决方案中排除项目
【发布时间】:2013-10-10 08:33:24
【问题描述】:

我已经安装并配置了 SonarQube 3.7.1 和 sonar-runner 2.3。

尝试在 c# 解决方案上运行 sonar-runner 时出现错误:

ERROR: Error during Sonar runner execution 
ERROR: Unable to execute Sonar 
ERROR: Caused by: Error occured while reading Visual Studio files. 
ERROR: Caused by: Error while processing the project C:\root\MPS\MPA\Main\Source\MPA.Build\MPA.Build.csproj : assemblyName not defined

我的 sonar-project.properties 看起来像

sonar.projectKey=CompanyName:MPA.Android 
sonar.projectName=MPA
sonar.projectVersion=1.0

sonar.sources=. 
sonar.language=cs
sonar.sourceEncoding=UTF-8
\#sonar.dotnet.key.generation.strategy=safe
sonar.dotnet.visualstudio.solution.file=MPA.sln

sonar.skippedModules=MPA.Build

我想排除项目 MPA.Build。但它不起作用。

在 MPA.sln 文件中,MPA.Build 项目定义为

项目(“{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}”)=“MPA.Build”,“MPA.Build\MPA.Build.csproj”,“{A8B400F6-A5C5-4843-96CA-92B25A2E6483} " 结束项目

有人知道如何解决这个错误吗?

运行 sonar-runner -X 时,输出为:

错误:Sonar runner 执行期间出错 org.sonar.runner.impl.RunnerException:无法执行声纳 在 org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:91) 在 org.sonar.runner.impl.BatchLauncher$1.run(BatchLauncher.java:75) 在 java.security.AccessController.doPrivileged(本机方法) 在 org.sonar.runner.impl.BatchLauncher.doExecute(BatchLauncher.java:69) 在 org.sonar.runner.impl.BatchLauncher.execute(BatchLauncher.java:50) 在 org.sonar.runner.api.EmbeddedRunner.doExecute(EmbeddedRunner.java:102) 在 org.sonar.runner.api.Runner.execute(Runner.java:90) 在 org.sonar.runner.Main.executeTask(Main.java:70) 在 org.sonar.runner.Main.execute(Main.java:59) 在 org.sonar.runner.Main.main(Main.java:41) 引起:org.sonar.api.utils.SonarException:读取 Visual 时发生错误 工作室文件。 在 org.sonar.plugins.dotnet.core.VisualStudioProjectBuilder.createVisualStudioSolution(VisualStudioProjectBuilder.java:190) 在 org.sonar.plugins.dotnet.core.VisualStudioProjectBuilder.build(VisualStudioProjectBuilder.java:82) 在 org.sonar.api.batch.bootstrap.ProjectBuilder.build(ProjectBuilder.java:67) 在 org.sonar.batch.scan.ProjectReactorReady.start(ProjectReactorReady.java:63) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.picocontainer.lifecycle.ReflectionLifecycleStrategy.invokeMethod(ReflectionLifecycleStrategy.java:110) 在 org.picocontainer.lifecycle.ReflectionLifecycleStrategy.start(ReflectionLifecycleStrategy.java:89) 在 org.picocontainer.injectors.AbstractInjectionFactory$LifecycleAdapter.start(AbstractInjectionFactory.java:84) 在 org.picocontainer.behaviors.AbstractBehavior.start(AbstractBehavior.java:169) 在 org.picocontainer.behaviors.Stored$RealComponentLifecycle.start(Stored.java:132) 在 org.picocontainer.behaviors.Stored.start(Stored.java:110) 在 org.picocontainer.DefaultPicoContainer.potentiallyStartAdapter(DefaultPicoContainer.java:1015) 在 org.picocontainer.DefaultPicoContainer.startAdapters(DefaultPicoContainer.java:1008) 在 org.picocontainer.DefaultPicoContainer.start(DefaultPicoContainer.java:766) 在 org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:91) 在 org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77) 在 org.sonar.batch.scan.ScanTask.scan(ScanTask.java:57) 在 org.sonar.batch.scan.ScanTask.execute(ScanTask.java:45) 在 org.sonar.batch.bootstrap.TaskContainer.doAfterStart(TaskContainer.java:82) 在 org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92) 在 org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77) 在 org.sonar.batch.bootstrap.BootstrapContainer.executeTask(BootstrapContainer.java:156) 在 org.sonar.batch.bootstrap.BootstrapContainer.doAfterStart(BootstrapContainer.java:144) 在 org.sonar.api.platform.ComponentContainer.startComponents(ComponentContainer.java:92) 在 org.sonar.api.platform.ComponentContainer.execute(ComponentContainer.java:77) 在 org.sonar.batch.bootstrapper.Batch.startBatch(Batch.java:92) 在 org.sonar.batch.bootstrapper.Batch.execute(Batch.java:74) 在 org.sonar.runner.batch.IsolatedLauncher.execute(IsolatedLauncher.java:45) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 org.sonar.runner.impl.BatchLauncher$1.delegateExecution(BatchLauncher.java:87) ... 9 更多原因:org.sonar.plugins.dotnet.api.DotNetException:处理时出错 项目 C:\root\MPS\MPA\Main\Source\MPA.Build\MPA.Build.csproj : 未定义程序集名称 在 org.sonar.plugins.dotnet.api.microsoft.ModelFactory.getProject(ModelFactory.java:364) 在 org.sonar.plugins.dotnet.api.microsoft.ModelFactory.getProjects(ModelFactory.java:274) 在 org.sonar.plugins.dotnet.api.microsoft.ModelFactory.getSolution(ModelFactory.java:198) 在 org.sonar.plugins.dotnet.core.VisualStudioProjectBuilder.createVisualStudioSolution(VisualStudioProjectBuilder.java:185) ... 44 更多

【问题讨论】:

    标签: c# sonarqube sonar-runner


    【解决方案1】:

    "assemblyName not defined" => 您只需要修复不正确的 MPA.Build.csproj 文件,因为缺少标签“AssemblyName”。例如,请参阅https://github.com/SonarSource/sonar-examples/blob/master/projects/languages/csharp/Example.Core/Example.Core.csproj

    【讨论】:

      【解决方案2】:

      您拥有的属性文件语法似乎是正确的。当你运行 sonar-runner 时,你应该会在接近运行开始时看到这样的行:

      INFO  - Apply project exclusions 
      INFO  - Exclude project: MPA.Build [SomePrefix:MPA.Build]
      

      如果你不这样做,我建议使用 -X 参数运行 sonar-runner,它将调试语句打印到控制台。 (您可能希望将控制台重定向/捕获到日志文件。)这可能会提供一些额外信息,有助于理解为什么它没有看到您的排除项。

      此外,在 SonarQube Web UI 中,查看项目时,单击左侧导航栏中的“组件”链接。这将列出解决方案的“模型”。仔细检查此视图中显示的名称是否与 MBA.Build 匹配。

      【讨论】:

      • 我添加了 sonar-runner -X 输出。我没有看到您在上面描述的“INFO”输出。同样在 SonarQube Web UI 中,该项目不可见。
      • 我提到的 INFO 行将位于输出的最顶部,以及有关如何配置运行器的其他信息。使用 -X 运行时,您可以发布输出的前 20 行左右吗?
      【解决方案3】:

      我今天在使用 sonarqube 5.0 时遇到了同样的问题。 我尝试了“sonar.skippedModules”,但现在已弃用。

      相反,您必须使用visual studio bootstraper 提供的以下表达式:

      sonar.visualstudio.skippedProjectPattern =

      【讨论】:

        猜你喜欢
        • 2020-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多