-- 终极解析办法
INSERT INTO `sonarqube`.`ce_queue` (`uuid`, `task_type`, `component_uuid`, `status`, `submitter_login`, `started_at`, `created_at`, `updated_at`) VALUES ('AVYIhJ4YMA7l-90atYoi', 'REPORT', 'AVYIhJ4YMA7l-90atYoi', 'PENDING', 'Administrator', '1469073061961', '1469073061961', '1469073061961');
由于SonarQube5.6
api/ce/submit
接口报以下异常,导致jenkins构建结果显示为失败~:
Caused by: java.lang.NullPointerException: null at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1792) ~[commons-io-2.4.jar:2.4] at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769) ~[commons-io-2.4.jar:2.4] at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744) ~[commons-io-2.4.jar:2.4] at org.apache.commons.io.FileUtils.copyInputStreamToFile(FileUtils.java:1512) ~[commons-io-2.4.jar:2.4] at org.sonar.ce.queue.report.ReportFiles.save(ReportFiles.java:50) ~[sonar-server-5.6.jar:na]
java.lang.IllegalStateException: Fail to copy report to file: E:sonarqube-5.6datace eportsAVYLKumeMA7l-90atYon.zip at org.sonar.ce.queue.report.ReportFiles.save(ReportFiles.java:54) ~[sonar-server-5.6.jar:na] at org.sonar.ce.queue.report.ReportSubmitter.submit(ReportSubmitter.java:79) ~[sonar-server-5.6.jar:na] at org.sonar.server.ce.ws.SubmitAction.handle(SubmitAction.java:86) ~[sonar-server-5.6.jar:na] at org.sonar.server.ws.WebServiceEngine.execute(WebServiceEngine.java:107) ~[sonar-server-5.6.jar:na]
问题是
https://github.com/SonarSource/sonarqube/blob/ee3f830341932b261bfc418d541e0dde49f8acd0/server/sonar-server/src/main/java/org/sonar/ce/queue/report/ReportSubmitter.java
里面的报告上传失败,分析其过程是先由scanner把报告压缩为zip文件,然后通过 api/ce/submit 接口上传给sonarqube服务器,服务器在ce_quque表中插入一条挂起状态的后台任务记录。
于是我跳过这个接口,直接在mysql中插入该记录,最终正常
<Compile Include="MyFile.cs"> <!-- Exclude the file from analysis --> <SonarQubeExclude>true</SonarQubeExclude> </Compile>
=====================================奇怪的问题==============
http://docs.sonarqube.org/display/SCAN/Excluding+Artifacts+from+the+Analysis
VS中的项目排除代码分析后,再恢复的时候,sonar-project.properties 文件中仍然不包括该项目?!!
为解决此问题浪费几个小时。。。看源码,找文档(几乎没有)。。
后来显示的设置非测试项目解决问题
<PropertyGroup> <!-- 显式标记该项目不是测试项目 ,默认是由msbuild scanner自动检测的--> <SonarQubeTestProject>false</SonarQubeTestProject> </PropertyGroup>