2014-02-21 2 views
10

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

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 на соответствующие пакеты для каждого задания для анализа или есть лучший способ сделать это все в одном файле свойств?

Благодаря

EDIT

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

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) 

ответ

21

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

Поскольку оба ваши модуля расположены, вы можете просто добавить следующее к свойствам сонара-проект «»:

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

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

Result of Sonar analysis

EDIT

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

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

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

More details about file exclusion

+0

этот подход приводит к новой ошибке = вызвано: org.sonar.squid.api.AnalysisException: Получено исключение - org.sonar.squid.api.AnalysisException: исходный каталог не соответствует объявлению пакета com.company.package, file: pathtofile/myclass.java, строка: 0 – Biscuit128

+0

Если ваши источники модулей находятся в одной папке, попробуйте указать правильная исходная папка для обоих модулей и исключает нежелательный пакет с помощью «sonar.exclusions». –

+0

Я отредактировал свой ответ, чтобы обратиться к AnalysisException. –

3

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

+0

это именно то, что я пробовал - см. Редактирование и проблемы после попытки этого подхода – Biscuit128

0

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

Смежные вопросы