我们正在使用SonarQube v6.5和MSBuild Runner v3.0.2.656来分析一堆C#/ .NET程序集。 SonarQube能够毫无问题地分析我们的许多项目,但在其他项目上失败了。
我们在构建日志中看到以下错误:(为清晰起见,删除了时间戳)
INFO: Analysis report generated in 203ms, dir size=257 KB
INFO: Analysis reports compressed in 78ms, zip size=93 KB
INFO: Analysis report generated in D:\Fusion workspaces\Fusion main web services build (development)\AccessDB\.sonarqube\out\.sonar\batch-report
DEBUG: Upload report
DEBUG: POST 400 http://fusionbuilder.wsicorp.com:9000/api/ce/submit?projectKey=Fusion:WebServices:AccessDB&projectName=D:\Fusion%20workspaces\Fusion%20main%20web%20services%20build%20(development)\AccessDB | time=1031ms
INFO: ------------------------------------------------------------------------
INFO: EXECUTION FAILURE
INFO: ------------------------------------------------------------------------
在SonarQube服务器上,web.log中还会出现以下错误:
INFO web[][o.a.c.h.Http11Processor] Error parsing HTTP request header
Note: further occurrences of HTTP header parsing errors will be logged at DEBUG level.
java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:472)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:683)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:868)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1455)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
在论坛上搜索了一下后,我们通过并更改了项目中的所有源文件以编码UTF-8,认为这可能是问题,但这并没有解决问题。
第一个问题:这是SonarQube的问题,还是Tomcat J2EE容器的问题?
第二个问题:我们如何解决这个问题?
提前谢谢!
答案 0 :(得分:1)
查看此日志:
DEBUG:POST 400 http://fusionbuilder.wsicorp.com:9000/api/ce/submit?projectKey=Fusion:WebServices:AccessDB&projectName=D:\ Fusion%20workspaces \ Fusion%20main%20web%20services%20build%20(开发)\ AccessDB |时间= 1031ms
看起来projectName
设置为D:\Fusion workspaces\Fusion main web services build (development)\AccessDB
,这是项目的一个非常奇怪的名称。
使用Scanner for MSBuild运行开始步骤时,可以使用/n
参数指定项目名称,例如:/n:"Project Name"
。我建议指定一个没有D:
且没有\
个字符的项目名称。