Skip to content

Add support for multi project builds #10

Open
@henryju

Description

Trying to analyze a multi project build like https://github.com/pbassiner/sbt-multi-project-example failed because it runs two simultaneous analysis of each sub project:

[julien:~/tmp/sbt-multi-project-example] master(+2/-0) 25s ± sbt sonar
[info] Loading settings from plugins.sbt ...
[info] Loading project definition from /home/julien/tmp/sbt-multi-project-example/project
[info] Loading settings from build.sbt ...
[info] Set current project to sbt-multi-project-example (in build file:/home/julien/tmp/sbt-multi-project-example/)
[success] Total time: 1 s, completed 21 mai 2019 à 09:58:31
[info] User cache: /home/julien/.sonar/cache
[info] User cache: /home/julien/.sonar/cache
[info] Default locale: "fr_FR", source code encoding: "UTF-8" (analysis is platform dependent)
[info] Default locale: "fr_FR", source code encoding: "UTF-8" (analysis is platform dependent)
[info] User cache: /home/julien/.sonar/cache
[info] Default locale: "fr_FR", source code encoding: "UTF-8" (analysis is platform dependent)
[info] User cache: /home/julien/.sonar/cache
[info] Default locale: "fr_FR", source code encoding: "UTF-8" (analysis is platform dependent)
[info] Load global settings
[info] Load global settings
[info] Load global settings
[info] Load global settings (done) | time=116ms
[info] Load global settings (done) | time=228ms
[info] Server id: 92D88F0A-AWrUCvn3DmI5VoTXuYYY
[info] Server id: 92D88F0A-AWrUCvn3DmI5VoTXuYYY
[info] Load global settings (done) | time=214ms
[info] Server id: 92D88F0A-AWrUCvn3DmI5VoTXuYYY
[info] User cache: /home/julien/.sonar/cache
[info] User cache: /home/julien/.sonar/cache
[info] User cache: /home/julien/.sonar/cache
[info] Load/download plugins
[info] Load plugins index
[info] Load/download plugins
[info] Load plugins index
[info] Load/download plugins
[info] Load plugins index
[info] Load global settings
[info] Load plugins index (done) | time=53ms
[info] Load plugins index (done) | time=58ms
[info] Load plugins index (done) | time=68ms
[info] Load/download plugins (done) | time=129ms
[info] Load/download plugins (done) | time=135ms
[info] Load/download plugins (done) | time=142ms
[info] Load global settings (done) | time=128ms
[info] Server id: 92D88F0A-AWrUCvn3DmI5VoTXuYYY
[info] User cache: /home/julien/.sonar/cache
[info] Load/download plugins
[info] Load plugins index
[info] Load plugins index (done) | time=59ms
[info] Load/download plugins (done) | time=79ms
[info] Process project properties
[info] Execute project builders
[info] Execute project builders (done) | time=8ms
[info] Project key: com.pbassiner:multi2
[info] Base dir: /home/julien/tmp/sbt-multi-project-example
[info] Working dir: /home/julien/tmp/sbt-multi-project-example/.scannerwork
[info] Process project properties
[info] Process project properties
[info] Process project properties
[info] Execute project builders
[info] Load project settings for component key: 'com.pbassiner:multi2'
[error] Invalid value of sonar.tests for com.pbassiner:sbt-multi-project-example
[info] Execute project builders (done) | time=20ms
[info] Execute project builders
[info] Execute project builders (done) | time=11ms
[info] Project key: com.pbassiner:common
[info] Base dir: /home/julien/tmp/sbt-multi-project-example
[info] Working dir: /home/julien/tmp/sbt-multi-project-example/.scannerwork
[info] Project key: com.pbassiner:multi1
[info] Base dir: /home/julien/tmp/sbt-multi-project-example
[info] Working dir: /home/julien/tmp/sbt-multi-project-example/.scannerwork
[info] Load quality profiles
[info] Load quality profiles (done) | time=67ms
[info] Load active rules
[info] Load active rules (done) | time=1100ms
[info] Indexing files...
[info] Project configuration:
[info] 2 files indexed
[info] 0 files ignored because of scm ignore settings
[info] Quality profile for scala: Sonar way
[info] ------------- Run sensors on module com.pbassiner:multi2
[info] Load metrics repository
[info] Load metrics repository (done) | time=51ms
[info] Sensor JaCoCo XML Report Importer [jacoco]
[info] Sensor JaCoCo XML Report Importer [jacoco] (done) | time=2ms
[info] Sensor Scala Sensor [sonarscala]
[info] 1 source files to be analyzed
[info] Load project repositories
[info] Load project repositories (done) | time=6ms
[info] 1/1 source files have been analyzed
[info] Sensor Scala Sensor [sonarscala] (done) | time=831ms
[info] Sensor JavaXmlSensor [java]
[info] Sensor JavaXmlSensor [java] (done) | time=1ms
[info] Sensor HTML [web]
[info] Sensor HTML [web] (done) | time=9ms
[info] ------------- Run sensors on project
[info] Sensor Zero Coverage Sensor
[info] Sensor Zero Coverage Sensor (done) | time=5ms
[info] SCM provider for this project is: git
[info] 2 files to be analyzed
[info] 2/2 files analyzed
[info] 1 file had no CPD blocks
[info] Calculating CPD for 0 files
[info] CPD calculation finished
[info] Analysis report generated in 45ms, dir size=76 KB
[info] Analysis report compressed in 7ms, zip size=11 KB
[info] Analysis report uploaded in 433ms
[info] ANALYSIS SUCCESSFUL, you can browse http://localhost:9000/dashboard?id=com.pbassiner%3Amulti2
[info] Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report
[info] More about the report processing at http://localhost:9000/api/ce/task?id=AWrZZkWWmaqglRiDN7uy
[info] Analysis total time: 4.496 s
[error] java.lang.IllegalStateException: Another SonarQube analysis is already in progress for this project
[error]         at org.sonar.scanner.scan.ProjectLock.failAlreadyInProgress(ProjectLock.java:55)
[error]         at org.sonar.scanner.scan.ProjectLock.tryLock(ProjectLock.java:50)
[error]         at org.sonar.scanner.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:137)
[error]         at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:134)
[error]         at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
[error]         at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:131)
[error]         at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
[error]         at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
[error]         at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
[error]         at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:99)
[error]         at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:63)
[error]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error]         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error]         at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[error]         at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
[error]         at com.sun.proxy.$Proxy13.execute(Unknown Source)
[error]         at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233)
[error]         at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
[error]         at com.olaq.sbt.SonarScannerPlugin$.$anonfun$sonarScanTask$1(SonarScannerPlugin.scala:56)
[error]         at com.olaq.sbt.SonarScannerPlugin$.$anonfun$sonarScanTask$1$adapted(SonarScannerPlugin.scala:48)
[error]         at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:42)
[error]         at sbt.std.Transform$$anon$4.work(System.scala:64)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:257)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]         at sbt.Execute.work(Execute.scala:266)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:257)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:167)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:32)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error]         at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error]         at java.base/java.lang.Thread.run(Thread.java:834)
[error] Caused by: java.nio.channels.OverlappingFileLockException
[error]         at java.base/sun.nio.ch.FileLockTable.checkList(FileLockTable.java:229)
[error]         at java.base/sun.nio.ch.FileLockTable.add(FileLockTable.java:123)
[error]         at java.base/sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1160)
[error]         at org.sonar.scanner.scan.DirectoryLock.tryLock(DirectoryLock.java:48)
[error]         at org.sonar.scanner.scan.ProjectLock.tryLock(ProjectLock.java:46)
[error]         at org.sonar.scanner.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:137)
[error]         at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:134)
[error]         at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
[error]         at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:131)
[error]         at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
[error]         at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
[error]         at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
[error]         at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:99)
[error]         at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:63)
[error]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error]         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error]         at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[error]         at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
[error]         at com.sun.proxy.$Proxy13.execute(Unknown Source)
[error]         at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233)
[error]         at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
[error]         at com.olaq.sbt.SonarScannerPlugin$.$anonfun$sonarScanTask$1(SonarScannerPlugin.scala:56)
[error]         at com.olaq.sbt.SonarScannerPlugin$.$anonfun$sonarScanTask$1$adapted(SonarScannerPlugin.scala:48)
[error]         at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:42)
[error]         at sbt.std.Transform$$anon$4.work(System.scala:64)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:257)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]         at sbt.Execute.work(Execute.scala:266)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:257)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:167)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:32)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error]         at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error]         at java.base/java.lang.Thread.run(Thread.java:834)
[error] java.lang.IllegalStateException: Another SonarQube analysis is already in progress for this project
[error]         at org.sonar.scanner.scan.ProjectLock.failAlreadyInProgress(ProjectLock.java:55)
[error]         at org.sonar.scanner.scan.ProjectLock.tryLock(ProjectLock.java:50)
[error]         at org.sonar.scanner.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:137)
[error]         at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:134)
[error]         at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
[error]         at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:131)
[error]         at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
[error]         at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
[error]         at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
[error]         at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:99)
[error]         at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:63)
[error]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error]         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error]         at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[error]         at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
[error]         at com.sun.proxy.$Proxy14.execute(Unknown Source)
[error]         at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233)
[error]         at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
[error]         at com.olaq.sbt.SonarScannerPlugin$.$anonfun$sonarScanTask$1(SonarScannerPlugin.scala:56)
[error]         at com.olaq.sbt.SonarScannerPlugin$.$anonfun$sonarScanTask$1$adapted(SonarScannerPlugin.scala:48)
[error]         at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:42)
[error]         at sbt.std.Transform$$anon$4.work(System.scala:64)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:257)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]         at sbt.Execute.work(Execute.scala:266)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:257)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:167)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:32)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error]         at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error]         at java.base/java.lang.Thread.run(Thread.java:834)
[error] Caused by: java.nio.channels.OverlappingFileLockException
[error]         at java.base/sun.nio.ch.FileLockTable.checkList(FileLockTable.java:229)
[error]         at java.base/sun.nio.ch.FileLockTable.add(FileLockTable.java:123)
[error]         at java.base/sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:1160)
[error]         at org.sonar.scanner.scan.DirectoryLock.tryLock(DirectoryLock.java:48)
[error]         at org.sonar.scanner.scan.ProjectLock.tryLock(ProjectLock.java:46)
[error]         at org.sonar.scanner.scan.ProjectScanContainer.doBeforeStart(ProjectScanContainer.java:137)
[error]         at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:134)
[error]         at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
[error]         at org.sonar.scanner.bootstrap.GlobalContainer.doAfterStart(GlobalContainer.java:131)
[error]         at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:136)
[error]         at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:122)
[error]         at org.sonar.batch.bootstrapper.Batch.doExecute(Batch.java:73)
[error]         at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:99)
[error]         at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:63)
[error]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[error]         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[error]         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[error]         at java.base/java.lang.reflect.Method.invoke(Method.java:566)
[error]         at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60)
[error]         at com.sun.proxy.$Proxy14.execute(Unknown Source)
[error]         at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233)
[error]         at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151)
[error]         at com.olaq.sbt.SonarScannerPlugin$.$anonfun$sonarScanTask$1(SonarScannerPlugin.scala:56)
[error]         at com.olaq.sbt.SonarScannerPlugin$.$anonfun$sonarScanTask$1$adapted(SonarScannerPlugin.scala:48)
[error]         at scala.Function1.$anonfun$compose$1(Function1.scala:44)
[error]         at sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:42)
[error]         at sbt.std.Transform$$anon$4.work(System.scala:64)
[error]         at sbt.Execute.$anonfun$submit$2(Execute.scala:257)
[error]         at sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:16)
[error]         at sbt.Execute.work(Execute.scala:266)
[error]         at sbt.Execute.$anonfun$submit$1(Execute.scala:257)
[error]         at sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:167)
[error]         at sbt.CompletionService$$anon$2.call(CompletionService.scala:32)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error]         at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error]         at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error]         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error]         at java.base/java.lang.Thread.run(Thread.java:834)
[error] The folder '/home/julien/tmp/sbt-multi-project-example/src/test' does not exist for 'com.pbassiner:sbt-multi-project-example' (base directory = /home/julien/tmp/sbt-multi-project-example)
[error] (common/*:sonar) java.lang.IllegalStateException: Another SonarQube analysis is already in progress for this project
[error] (multi1/*:sonar) java.lang.IllegalStateException: Another SonarQube analysis is already in progress for this project
[error] (global/*:sonar) The folder '/home/julien/tmp/sbt-multi-project-example/src/test' does not exist for 'com.pbassiner:sbt-multi-project-example' (base directory = /home/julien/tmp/sbt-multi-project-example)
[error] Total time: 8 s, completed 21 mai 2019 à 09:58:39

The sbt scanner should instead collect configuration of each sub project and configure a multi-module analysis (using property sonar.modules) like the scanner for Maven or Gradle.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions