【问题标题】:MSBuild SonarQube Runner v1.0 returns with code 1 after "Generating the FxCop ruleset"MSBuild SonarQube Runner v1.0 在“生成 FxCop 规则集”后返回代码 1
【发布时间】:2015-10-29 19:29:41
【问题描述】:

我正在使用新的 MSBuild SonarQube Runner v1.0 试用 SonarQube。如果我在本地安装新的 SonarQube 服务器,则以下命令可以正常工作,之后我可以直接构建我的解决方案,调用“end”命令,并将结果发布到 SonarQube:

MSBuild.SonarQube.Runner.exe begin /key:TestKey /name:TestName /version:1.0.0.0

但是,如果我对存在于内部网络上的现有 SonarQube 服务器运行它,它总是返回退出代码 1:

15:32:40 Creating config and output folders... 15:32:40 Creating directory: c:\Test\MSBuild.SonarQube.Runner-1.0.itsonar\.sonarqube\conf 15:32:40 Creating directory: c:\Test\MSBuild.SonarQube.Runner-1.0.itsonar\.sonarqube\out 15:32:41 Generating the FxCop ruleset: c:\Test\MSBuild.SonarQube.Runner-1.0.itsonar\.sonarqube\conf\SonarQubeFxCop-cs.ruleset Process returned exit code 1

似乎将很多依赖项下载到 /.sonarqube 中,因此与服务器的通信不是问题

我尝试过的事情:

  • 检查了 access.log、server.log 和事件日志
  • 将现有服务器升级到 v5.1.2(使用指南进行全新安装)
  • 将 sonar-csharp-plugin 升级到 v4.1
  • 右键单击服务器上的所有 .jar 文件并确保它们未被阻止
  • 直接在服务器上试了运行器
  • (进行中)尝试调试源代码(发生在预处理步骤中的某处:success 返回为true,但错误代码为 1)
  • 在重新启动的服务器上禁用 UAC
  • 在服务器和客户端上重新安装了 JRE,确保 PATH 和注册表中的 JAVA_HOME 设置正确

任何帮助或指针都被广泛接受。我已经坚持了 2 天,除了继续浏览源代码之外,我想不出任何其他尝试。谢谢。

【问题讨论】:

    标签: msbuild sonarqube sonarqube-msbuild-runner


    【解决方案1】:

    这是一个棘手的问题!查看代码,我只看到一条可以产生此输出的路径:

    1. 为 C# 生成 FxCop 规则集时失败,因为未记录 VB.NET FxCop 规则集消息 - 请参阅 TeamBuildPreProcessor.cs#L149TeamBuildPreProcessor.cs#L185
    2. 对 C# 的 GenerateFxCopRuleset() 调用抛出了 WebException,导致调用 Utilities.HandleHostUrlWebException() - 它必须返回 true 才能静默吞下异常 - 请参阅 Utilities.cs#L153
    3. 返回true而不记录任何消息的唯一路径是如果收到HttpStatusCode.NotFound - 请参阅Utilities.cs#L158
    4. 控制流返回到FetchArgumentsAndRulesets(),它返回false,然后返回到Execute(),它也返回false - 请参阅TeamBuildPreProcessor.cs#L106
    5. MSBuild SonarQube Runner“开始”阶段(在代码中称为“预处理器”)失败 - 请参阅 Program.cs#L42

    因此,在某些时候,C# FxCop 规则集生成所需的某些 SonarQube Web 服务会返回 HTTP 404 错误。

    您能否监控您的网络流量并监听失败的 HTTP 调用? [之后我会继续更新这个答案]

    编辑:确实错误是由包含特殊字符的质量配置文件名称引起的。此类字符目前被严重的 URL 转义,导致 404。

    我已创建以下票证以在即将发布的版本中解决此问题:http://jira.sonarsource.com/browse/SONARMSBRU-125

    【讨论】:

    • 您好,Dinish,感谢您的意见。昨晚我设法使用您的指针找到了问题,但这有点出乎意料:在Quality Profiles 中,有一个名为“Sonar+Resharper”的现有C# 默认配置文件。我将名称中的+ 替换为空格Sonar Resharper,现在注册/开始命令可以从运行器运行。
    • 我遇到了与沃伦在他的问题中描述的相同的问题。显然我的质量档案被命名为xxxx C#。在我从个人资料名称中删除 # 后,它的作用就像一个魅力。
    • 谢谢 - 我已经编辑了我的答案并创建了一个票证来修复下一个版本中的错误 URL 转义。
    • @Dinesh-SonarSourceTeam 你能看看这个问题吗stackoverflow.com/questions/28027524/…
    • @Dinesh-SonarSourceTeam 请在这里提出新问题stackoverflow.com/questions/32004565/…
    猜你喜欢
    • 2015-11-12
    • 2015-12-27
    • 2016-08-20
    • 2016-02-27
    • 1970-01-01
    • 2015-11-06
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多