web-dev-qa-db-ja.com

ソナープロパティファイル

次のパッケージ構造を持つプロジェクトがあります

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

しかし理想的には、2つのレポートを分離して、元のパッケージ用とappVersion2パッケージ用に1つずつ作成したいと思います。さて、前述のように、それぞれに個別のプロパティファイルを作成しました。 sonar.sources分析する各ジョブのそれぞれのパッケージに、または1つのプロパティファイルでこれをすべて実行するより良い方法がありますか?

ありがとう

[〜#〜] 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)
13
Biscuit128

モジュール名がモジュールディレクトリと一致しない場合は、projectBaseDirを指定する必要があります。

両方のモジュールが「。」にあるため、次をsonar-projectプロパティに追加するだけです。

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/**/*

ファイル除外の詳細

25
Raphaël

マルチモジュールプロジェクト構造 を定義してから、プロジェクトのルートフォルダーにある1つのプロパティファイルでソナーの構成を設定できます(Way #1

3
vzamanillo

Sonarを設定せずに、最初にJenkinsでビルドジョブを実行します。次にSonarを追加して、ビルドジョブを再度実行します。問題を修正する必要があります

0
amigo21