【问题标题】:SonarQube plug-in not scanning C# files during TFS BuildSonarQube 插件在 TFS 构建期间未扫描 C# 文件
【发布时间】:2017-12-16 22:15:49
【问题描述】:

我正在运行带有 v6.1 的 C# 插件的 SonarQube 服务器 v6.4。我们在 TFS 2015(更新 3)实例中安装了 SonarQube TFS extension 的 v3.0.0。

SonarQube 扫描 .cs 文件时遇到问题。在一些构建步骤的输出中有一些警告,我不完全确定要做什么。我无法在邮件中找到太多信息。

Visual Studio 构建步骤输出:

        OverrideCodeAnalysisProperties:
          Skipping FxCop analysis: the SonarQube ruleset does not exist. Ruleset: C:\BuildAgents\Agent-01\_work\111\.sonarqube\conf\\SonarQubeFxCop-cs.ruleset

SonarQube Scanner for MSBuild - 结束分析(新) 步骤输出:

我在步骤输出的开头看到了这个...

SonarQube Scanner for MSBuild 3.0 
Default properties file was found at C:\BuildAgents\Agent-01\tasks\SonarQubeScannerMsBuildBegin\3.0.0\SonarQubeScannerMsBuild\SonarQube.Analysis.xml 
Loading analysis properties from C:\BuildAgents\Agent-01\tasks\SonarQubeScannerMsBuildBegin\3.0.0\SonarQubeScannerMsBuild\SonarQube.Analysis.xml 
Post-processing started. 
17:58:54.965  17:58:54.965  WARNING: Failed to find the code coverage command line tool. Possible cause: Visual Studio is not installed, or the installed version does not support code coverage. 
WARNING: File is not under the project directory and cannot currently be analysed by SonarQube. File: C:\Users\TFS2015Build\AppData\Local\Temp\.NETFramework,Version=v4.5.2.SqlClrAttributes.cs, project: C:\BuildAgents\Agent-01\_work\111\s\FunProject.Db\FunProject.Db.sqlproj
SONAR_SCANNER_OPTS is not configured. Setting it to the default value of -Xmx1024m 
Calling the SonarQube Scanner... 
INFO: Scanner configuration file: C:\BuildAgents\Agent-01\tasks\SonarQubeScannerMsBuildBegin\3.0.0\SonarQubeScannerMsBuild\sonar-scanner-3.0.3.778\bin\..\conf\sonar-scanner.properties 
INFO: Project root configuration file: C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\sonar-project.properties 
INFO: SonarQube Scanner 3.0.3.778 
INFO: Java 1.8.0_121 Oracle Corporation (64-bit) 
INFO: Windows Server 2012 R2 6.3 amd64  
INFO: SONAR_SCANNER_OPTS=-Xmx1024m 
INFO: User cache: C:\Users\TFS2015Build\.sonar\cache 
INFO: Load global settings 
INFO: Load global settings (done) | time=125ms 
INFO: User cache: C:\Users\TFS2015Build\.sonar\cache 
INFO: Load plugins index 
INFO: Load plugins index (done) | time=0ms 
INFO: Download sonar-csharp-plugin-6.1.0.2359.jar 
INFO: Download sonar-python-plugin-1.8.0.1496.jar 
INFO: Download sonar-java-plugin-4.11.0.10660.jar 
INFO: Download sonar-flex-plugin-2.3.jar 
INFO: Download sonar-scm-git-plugin-1.2.jar 
INFO: Download sonar-xml-plugin-1.4.3.1027.jar 
INFO: Download sonar-php-plugin-2.10.0.2087.jar 
INFO: Download sonar-scm-svn-plugin-1.4.0.522.jar 
INFO: Download sonar-javascript-plugin-3.1.1.5128.jar 
INFO: SonarQube server 6.4.0 
INFO: Default locale: "en_US", source code encoding: "windows-1252" (analysis is platform dependent) 
INFO: Process project properties 
INFO: Load project repositories 
INFO: Load project repositories (done) | time=141ms 
INFO: Load quality profiles 
INFO: Load quality profiles (done) | time=47ms 
INFO: Load active rules 
INFO: Load active rules (done) | time=281ms 
INFO: Load metrics repository 
INFO: Load metrics repository (done) | time=78ms 
INFO: Publish mode

...然后我会在我的解决方案中为每个项目看到一组这样的输出:

 INFO: -------------  Scan FunProject.Shared 
 INFO: Load server rules 
 INFO: Load server rules (done) | time=156ms 
 INFO: Initializer GenericCoverageSensor 
 INFO: Initializer GenericCoverageSensor (done) | time=0ms 
 INFO: Base dir: C:\BuildAgents\Agent-01\_work\111\s\FunProject.Shared 
 INFO: Working dir: C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\.sonar\mod13 
 INFO: Source paths: FunProjectFolder1/FunProjectClassFile1.cs, FunProjectFolder2/FunProjectClassFile2.cs, ... Properties/AssemblyInfo.cs, packages.config 
 INFO: Source encoding: UTF-8, default locale: en_US 
 INFO: Index files 
 INFO: Analyzer working directory does not exist 
 INFO: 12 files indexed 
 INFO: Quality profile for cs: Sonar way 
 INFO: Sensor C# [csharp] 
 INFO: Importing analysis results from C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\FunProject.Shared_3389\output-cs 
 WARNING: WARN: Protobuf file not found: C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\FunProject.Shared_3389\output-cs\encoding.pb 
 INFO: Importing Roslyn report 
 WARNING: WARN: Protobuf file not found: C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\FunProject.Shared_3389\output-cs\metrics.pb 
 WARNING: WARN: Protobuf file not found: C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\FunProject.Shared_3389\output-cs\token-type.pb 
 WARNING: WARN: Protobuf file not found: C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\FunProject.Shared_3389\output-cs\symrefs.pb 
 WARNING: WARN: Protobuf file not found: C:\BuildAgents\Agent-01\_work\111\.sonarqube\out\FunProject.Shared_3389\output-cs\token-cpd.pb 
 INFO: Sensor C# [csharp] (done) | time=78ms 
 INFO: Sensor SonarJavaXmlFileSensor [java] 
 INFO: Sensor SonarJavaXmlFileSensor [java] (done) | time=0ms 
 INFO: Sensor Analyzer for "php.ini" files [php] 
 INFO: Sensor Analyzer for "php.ini" files [php] (done) | time=0ms

我有什么明显的遗漏吗?

编辑

我使用的是 Visual Studio Professional,所以关于代码覆盖率的警告是由于我没有在构建服务器上安装 Visual Studio Enterprise。

【问题讨论】:

    标签: tfs sonarqube-msbuild-runner


    【解决方案1】:

    建议您先尝试在本地命令行中分析解决方案,看看是否有效。

    通过从项目的根目录执行以下命令来运行您的分析:

    SonarQube.Scanner.MSBuild.exe begin /k:"org.sonarqube:sonarqube-scanner-msbuild" /n:"Project Name" /v:"1.0"
    MSBuild.exe /t:Rebuild
    SonarQube.Scanner.MSBuild.exe end
    

    这将缩小您的环境问题或仅与您的构建定义设置相关的范围。

    根据报错信息:

    警告:找不到代码覆盖命令行工具。可能的 原因:没有安装 Visual Studio,或者安装的版本没有 不支持代码覆盖率。

    在您的构建代理上仔细检查您的 VS 版本。 注意:您需要 Visual Studio 企业版的代码覆盖率。查看this page 并展开“测试工具”部分。代码覆盖率仅针对企业版列出。

    此外,您还可以启用 verbose Debug Modesystem.debug=true 以获得更详细的构建日志以进行故障排除。

    【讨论】:

    • 感谢您的意见。不幸的是,我确实尝试了您的建议并取得了相同的结果。对于您关于代码覆盖率的观点,我们使用的是 VS Professional,因此消息的后半部分适用。我更新了我原来的问题以反映这种理解。
    • @aoggz 如果是这样,似乎这个问题与 TFS 无关,而是与您的构建代理环境有关。还要在您的本地环境上运行 SonarQube 分析,如果成功,请相互比较环境。您是使用 msbuild12 还是 msbuild14 ,15 构建您的解决方案?尝试使用最新版本的 msbuild,另外,请仔细检查 msbuild 的路径。除了检查 .cs 文件是否为只读?使用删除只读状态对其进行测试。
    • 我在本地机器上做了同样的练习。我在本地使用 MSBuild 14,这是安装在服务器上的。即使我们的构建服务器上尚未安装 VS 2017,我也尝试在本地使用 MSBuild 15。我还运行attrib -R ./* /S 来删除只读标志。所有尝试都产生了相同的结果。
    【解决方案2】:

    我将 C# 插件从 6.1(内部版本 2359)降级到 5.11(内部版本 1721),问题就消失了。导致该问题的版本肯定存在问题。

    【讨论】:

    • 我想我可能遇到了同样的问题。你是如何降级插件的。我没有看到这样做的选项,当我尝试重新安装它时,我找不到选择版本的方法。
    • 你只需要卸载插件,下载你想要的插件版本,然后放到你的SonarQube服务器的plugins目录下。服务器 UI 不支持安装非最新版本插件的方法。更多信息docs.sonarqube.org/display/SONAR/Installing+a+Plugin
    猜你喜欢
    • 1970-01-01
    • 2017-08-26
    • 2017-08-09
    • 2017-01-19
    • 1970-01-01
    • 2017-02-06
    • 2019-02-20
    • 2019-08-22
    • 2016-01-02
    相关资源
    最近更新 更多