java - 并行 Sonar 扫描仪执行锁定错误

标签 java jenkins sonarqube code-coverage sonarqube-scan

我们在 Jenkins 上运行 Sonar 扫描仪(版本 3.0.3.778),并使用 sonar.projectKey 和 sonar.branch 属性为每个分支创建一个新项目。即使每个分支创建一个新项目,我们仍然会随机收到错误,表明该项目已经在项目中进行了另一个分析。这似乎是扫描仪中的一个错误,当项目之间应该分开时,它会被自己的锁绊倒。请注意,我们还运行 5.6.6 版的 Sonar 服务器和 2.6.1 版的 Jenkins SonarQube 插件。有任何想法吗?

03:51:40 ERROR: Error during SonarQube Scanner execution
03:51:40 java.lang.IllegalStateException: Another SonarQube analysis is already in progress for this project
03:51:40    at org.sonar.batch.scan.ProjectLock.failAlreadyInProgress(ProjectLock.java:58)
03:51:40    at org.sonar.batch.scan.ProjectLock.tryLock(ProjectLock.java:50)
03:51:40    at org.sonar.batch.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:109)
03:51:40    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:140)
03:51:40    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
03:51:40    at org.sonar.batch.task.ScanTask.execute(ScanTask.java:47)
03:51:40    at org.sonar.batch.task.TaskContainer.doAfterStart(TaskContainer.java:86)
03:51:40    at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:142)
03:51:40    at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:127)
03:51:40    at org.sonar.batch.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:106)
03:51:40    at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:119)
03:51:40    at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:63)
03:51:40    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
03:51:40    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
03:51:40    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
03:51:40    at java.lang.reflect.Method.invoke(Method.java:498)
03:51:40    at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
03:51:40    at com.sun.proxy.$Proxy0.execute(Unknown Source)
03:51:40    at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233)
03:51:40    at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
03:51:40    at org.sonarsource.scanner.cli.Main.runAnalysis(Main.java:123)
03:51:40    at org.sonarsource.scanner.cli.Main.execute(Main.java:77)
03:51:40    at org.sonarsource.scanner.cli.Main.main(Main.java:61)

最佳答案

扫描仪在 Jenkins 中的项目工作区中创建临时文件。这就是为什么我们无法支持同一物理文件集的并发分析。您必须配置 Jenkins,以便它为每个分支使用不同的工作区。

关于java - 并行 Sonar 扫描仪执行锁定错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46287369/

相关文章:

mysql - 飞路假故障

jenkins - 如何使用 Jenkinsfile 在 groovy 函数中使用环境变量

javascript - 运行 Protractor/网络驱动程序不知道的异步回调/ promise

java - 魔数问题的解决方案......?

java - 如何显示表的列名

java - 从 java 类自动生成 jUnit 类

java - [TestNG][Jar] 在 list 中设置类路径(类路径)——类路径被忽略?

sonarqube - 如何防止分支之间的 Sonar 误报?

java - Servlet 不应该有可变的实例字段误报 Spring Autowiring (squid :S2226)

java - 将 HashMap 与 jcombobox 同步