Файлы свойств сонара

У меня есть проект, который имеет следующую структуру пакета

src/main/proj
    -com.company.package
        -appName
            -morepackages

        -appVersion2
            -morepackages

sonar-runner.properties
sonarBuild.sh
sonar-runner-project2.properties
sonarBuildProject2.sh

Как и в случае с файлом свойств по умолчанию, я могу запустить отчет сонара, и он будет генерировать обзор для всего проекта

sonar.projectKey=KEY
sonar.projectName=PROJNAME
sonar.projectVersion=1.0

sonar.host.url=someurl

#Path for sonar sources
sonar.sources=src/main/java

#Path for libraries
sonar.libraries=target/lib/*.jar

#Path for binaries
sonar.binaries=target/classes

#--------Default database
sonar.jdbc.url=someurl
sonar.jdbc.driver=com.mysql.jdbc.Driver

#----- Global database settings
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar

#----- Default directory layout
sonar.java.source=1.6
sonar.java.target=1.6

sonar.sourceEncoding=UTF-8

В идеале, однако, я бы хотел отделить два отчета, поэтому у меня есть один для исходного пакета и один для пакета appVersion2. Теперь - как упоминалось выше, я создал отдельный файл свойств для каждого. Должен ли я просто указывать sonar.sources на соответствующие пакеты для каждого задания для анализа или есть лучший способ сделать это все в одном файле свойств?

Спасибо

ИЗМЕНИТЬ

Мой файл свойств попыток нескольких модулей выглядит следующим образом

sonar.projectKey=rootkey
sonar.projectName=rootname
sonar.projectVersion=1.0
sonar.host.url=rooturl
sonar.sources=src/main/java/
sonar.libraries=target/lib/*.jar
sonar.modules=module1,module2
sonar.sourceEncoding=UTF-8

#----- Global database settings
sonar.jdbc.username=user
sonar.jdbc.password=pass

sonar.java.source=1.7
sonar.java.target=1.7


#--------Default database
sonar.jdbc.url=url
sonar.jdbc.driver=com.mysql.jdbc.Driver


module1.sonar.projectName=proja
module2.sonar.projectName=projb

module1.sonar.projectKey=projakey
module2.sonar.projectKey=projbkey

#Path for sonar sources
module1.sonar.sources=src/main/java/app1code
module2.sonar.sources=src/main/java/app2code

#Path for binaries
module1.sonar.binaries=target/classes/app1binaries
module2.sonar.binaries=target/classes/app2binaries

Я получаю сообщение об ошибке в сообщении....

Exception in thread "main" org.sonar.runner.RunnerException: org.sonar.runner.RunnerException: The base directory of the module 'module1' does not exist: patthtoapp/module1
    at org.sonar.runner.Runner.delegateExecution(Runner.java:288)
    at org.sonar.runner.Runner.execute(Runner.java:151)
    at org.sonar.runner.Main.execute(Main.java:84)
    at org.sonar.runner.Main.main(Main.java:56)
Caused by: org.sonar.runner.RunnerException: The base directory of the module 'module1' does not exist: pathtoapp/module1
    at org.sonar.runner.internal.batch.SonarProjectBuilder.setProjectBaseDir(SonarProjectBuilder.java:279)
    at org.sonar.runner.internal.batch.SonarProjectBuilder.loadChildProject(SonarProjectBuilder.java:191)
    at org.sonar.runner.internal.batch.SonarProjectBuilder.defineChildren(SonarProjectBuilder.java:169)
    at org.sonar.runner.internal.batch.SonarProjectBuilder.generateProjectDefinition(SonarProjectBuilder.java:122)
    at org.sonar.runner.internal.batch.Launcher.execute(Launcher.java:58)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.sonar.runner.Runner.delegateExecution(Runner.java:285)

Ответ 1

Вы должны указать projectBaseDir, если имя модуля не совпадает с вашим каталогом модулей.

Поскольку ваш модуль находится в ".", вы можете просто добавить следующие свойства вашего сонарного проекта:

module1.sonar.projectBaseDir=.
module2.sonar.projectBaseDir=.

Sonar будет обрабатывать ваши модули как компоненты проекта:

Result of Sonar analysis

ИЗМЕНИТЬ

Если оба модуля находятся в том же исходном каталоге, укажите одну и ту же исходную папку для обоих и исключите нежелательные пакеты с помощью sonar.exclusions:

module1.sonar.sources=src/main/java
module1.sonar.exclusions=app2code/**/*

module2.sonar.sources=src/main/java
module2.sonar.exclusions=app1code/**/*

Подробнее об исключении файла

Ответ 2

Вы можете определить структуру Multi-module, затем вы можете настроить конфигурацию для сонара в одном файле свойств в корневой папке вашего project, (Way #1)

Ответ 3

Выполнение задания сборки на Jenkins сначала без настройки Sonar. Затем добавьте Sonar и снова запустите задачу сборки. Должен исправить проблему