2013-11-21 7 views
9

私はしばらくの間、ソナーにアンドロイドプロジェクトの検査と分析を依頼してきました。しかし、これまで運がなかった。私がソナーで実装しようとしているプロジェクトは、いくつかのテストメソッドを持つ2つのクラスを持つテストプロジェクトです。すべてプロジェクトのsrcディレクトリに入っています。ソナー:どのように私はandroidプロジェクトを検査するためにgradleを使用するのですか?

これは私が今までに得たものです。

次の設定でbuild.gradleファイル:

buildscript { 
repositories { 
    mavenCentral() 
} 

dependencies { 
    classpath 'com.android.tools.build:gradle:0.6.+' 
} 
} 

apply plugin: 'android' 
apply plugin: 'sonar' 
apply plugin: "sonar-runner" 

android { 

buildToolsVersion "18.0.1" 
compileSdkVersion 18 

defaultConfig { 
    minSdkVersion 14 
    targetSdkVersion 16 
} 

sourceSets { 
    main { 
     manifest.srcFile 'AndroidManifest.xml' 
     java.srcDirs = ['com.example.GradleAndroidTest'] 
     resources.srcDirs = ['src'] 
     renderscript.srcDirs = ['src'] 
     res.srcDirs = ['res'] 
     assets.srcDirs = ['assets'] 
    } 
    instrumentTest.setRoot('test') 
} 


} 

sonar { 
server { 
    url = "http://sonar.someserver.int" 
} 
database { 
    url = "jdbc:mysql://sonar.someserver.int:3306/sonar" 
    driverClassName = "com.mysql.jdbc.Driver" 
    username = "*****" 
    password = "*****" 
} 
} 

sonarRunner { 
sonarProperties { 
    property "sonar.host.url", "http://sonar.someserver.int" 
    property "sonar.jdbc.url", "jdbc:mysql://sonar.someserver.int:3306/sonar" 
    property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver" 
    property "sonar.jdbc.username", "*****" 
    property "sonar.jdbc.password", "*****" 
} 
} 

私は、コマンドプロンプトで、プロジェクトのルートディレクトリに移動して入力し、このプロジェクトをテストするには:

のGradle sonarRunner

この後、プロジェクトはsonarQubeに表示されますが、統計は表示されません。コード行はありません。私の質問はあなたです。私は何かを忘れていますか?私は間違ったことをしていますか?

私はgradleとsonarで多くの経験をしていないので、今私はそうする人々から助けを求めています。あなたが助けることを願っています!

答えて

10

私が間違ったことを見つけました。私はいくつかの必須プロパティを追加するのを忘れていました。

sonarProperties { 
    property "sonar.host.url", "http://sonar.someserver.int" 
    property "sonar.jdbc.url", "jdbc:mysql://sonar.someserver.int:3306/sonar" 
    property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver" 
    property "sonar.jdbc.username", "*****" 
    property "sonar.jdbc.password", "*****" 

    //I added these properties to my gradle.build 
    property "sonar.projectKey", "GradleAndroidTest" 
    property "sonar.projectName", "GradleAndroidTest" 
    property "sonar.projectVersion", "V1.0" 
    property "sonar.language", "java" 
    property "sonar.sources", "src" 
    property "sonar.binaries", "build" 
} 

@Peter Niederwieser氏によると、プラグインはこれらの設定を事前に設定することができなかったため、手動で追加する必要がありました。

ソナープラグインを削除し、代わりにソナーランナープラグインを使用しました。

+6

これは間違いなく良いことです。最近のAndroid Studioのグ​​ラデルセットアップで使用するには、実際にプロパティ "sonar.sources"、 "src"をプロパティ "sonar.sources"、 "src/main/java"に変更しなければなりませんでした。 – pkk

+1

この設定でテスト情報(テスト数とテスト共生)を取得していますか? – Zlatko

+0

+1 @ Zlatkoの質問では、私は非常によく似た設定を使用しています。私が必要とするのは、SonarQubeのコードカバレッジレポートです。 – JaKXz

4

Androidプラグインが現在独自のソースセットモデルを使用していることが問題だと思います。 sonarRunnerプラグインはそのモデルを認識していないため、通常のように事前構成することはできません。ただし、必要なSonarプロパティを明示的に設定することで、この情報を自分で指定することができます。

sonarRunnerプラグインで事前に設定されているSonarプロパティを確認するには、SonarRunnerPluginクラスのGroovydocをチェックしてください。既存のすべてのSonarプロパティのリストはSonarのWebサイトで入手できます。

PS:sonarまたはsonarRunnerのいずれかのプラグインのみを適用してください。まだインキュベートしているにも関わらず後者(前者の後継者)を使用することをお勧めします。

+0

ありがとうございました。あなたが私にくれたGroovyDocのリンクは大きな助けとなりました。多くの感謝と私からの大きなアップヴォート! :-) –

+2

groovydocのリンクはもう動作しません。 –