【问题标题】:How to execute MSBuild.SonarQube.Runner for a .net solution which has multiple projects?如何为具有多个项目的 .net 解决方案执行 MSBuild.SonarQube.Runner?
【发布时间】:2016-08-16 08:30:53
【问题描述】:

我已使用以下设置 SonarQube:sonarqube-5.4、MSBuild.SonarQube.Runner-2.0、VS 2013(目标 .NET Framework 4.5.1)、SQL Server 2014 Express、Windows 7 Professional SP1 64 位操作系统。

我能够为一个 .NET 项目 (.csproj) 成功执行 sonarqube 运行器并生成结果。现在我想为具有许多 .csproj 条目的 .NET 解决方案 (.sln) 执行 MSBuild.SonarQube.Runner-2.0。

文件夹结构如下:

RootFolder 有一个 .sln 文件,每个项目 (.csproj) 都在根文件夹内的单独文件夹中创建。每个项目的单元测试也在根文件夹内的单独文件夹中创建。例如:

RootFolder -> Project.sln
RootFolder -> ProjectABCFolder -> ProjectABC.csproj
RootFolder -> ProjectABCTestsFolder -> ProjectABCTests.csproj
RootFolder -> ProjectXYZFolder -> ProjectXYZ.csproj
RootFolder -> ProjectXYZTestsFolder -> ProjectXYZTests.csproj

您能帮我解决以下问题吗?

  1. 如何执行 .sln 文件 - 需要进行哪些条目/设置?
  2. 如何跳过单元测试项目?
  3. 如何包含单元测试项目?
  4. 如何执行 VS 代码分析?

【问题讨论】:

    标签: .net sonarqube sonarqube-5.4


    【解决方案1】:

    这里几乎涵盖了所有这些,单元测试排除例外。

    http://docs.sonarqube.org/display/SCAN/From+the+Command+Line

    要运行整个解决方案,您应该能够从您的 RootFolder 运行以下命令:

    MSBuild.SonarQube.Runner.exe begin // Other args
    msbuild /t:Rebuild Project.sln
    MSBuild.SonarQube.Runner.exe end
    

    至于您的单元测试问题。大多数人选择不在项目中包含测试代码。这是通过 sonarqube UI 中的正则表达式完成的:Administration->Scanner for MSBuild。将此正则表达式更改为与您的测试项目不匹配的内容将导致它们被包含在内。

    【讨论】:

    • 感谢您的回复,我也这样做了。我添加了正则表达式“/.Tests/”以排除测试项目(ProjectABC.Tests.csproj、ProjectXYZ.Tests.csproj 等),但测试项目仍在评估中,然后分析失败。如何排除测试项目的执行?
    • 默认正则表达式应排除具有您指定名称的测试。如果其中没有任何专有内容,请将其更改回默认值并发布到运行器输出的链接。
    猜你喜欢
    • 2019-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-30
    • 1970-01-01
    • 2020-01-02
    • 2011-11-09
    • 2018-09-21
    相关资源
    最近更新 更多