我正在使用新的MSBuild SonarQube Runner v1.0试用SonarQube。如果我在本地安装一个新的SonarQube服务器,以下命令工作正常,我可以直接构建我的解决方案,调用'结束'命令,并将结果发布在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中,因此与服务器的通信不是问题
我尝试的事情:
success
返回true
,但错误代码为1)JAVA_HOME
和注册表中的PATH
设置正确任何帮助或指针都被大大接受。我已经被困在这2天了,除了继续浏览源代码之外,我还想不出其他任何事情。谢谢。
答案 0 :(得分:4)
这是一个棘手的问题!查看代码,我只看到一条可以产生此输出的路径:
GenerateFxCopRuleset()
对C#的调用引发了WebException
,导致Utilities.HandleHostUrlWebException()
的调用 - 必须返回true
才能无声吞下异常 - 请参阅{ {3}} true
而不记录任何消息的唯一路径是,如果收到HttpStatusCode.NotFound
,请参阅Utilities.cs#L153 FetchArgumentsAndRulesets()
,返回false
,然后返回Execute()
,同时返回false
- 请参阅Utilities.cs#L158 因此,在某些时候,生成C#FxCop规则集所需的一些SonarQube Web服务会返回HTTP 404错误。
您是否可以监控网络流量并监听失败的HTTP呼叫? [我会继续更新这个答案]
编辑:确实,错误是由包含特殊字符的质量配置文件名称引起的。此类字符目前严重脱网,导致404。
我在即将发布的版本中创建了以下故障单来解决此问题:Program.cs#L42