声纳:我如何使用gradle来检查android项目

时间:2013-11-21 09:53:47

标签: java android gradle sonarqube

我已经尝试了一段时间,让声纳检查和分析我的android项目。但到目前为止没有运气。我试图在声纳中实现的项目是一个测试项目,有两个类和一些测试方法。所有这些都塞在项目的src目录中。

所以这就是我到目前为止所得到的。

包含以下设置的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和声纳没有多少经验,所以现在我向那些有帮助的人寻求帮助。希望你能帮忙!

2 个答案:

答案 0 :(得分: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所说,该插件无法预先配置这些内容,所以我不得不手动添加它们。

我也删除了声纳插件,而是使用了声纳转轮插件。

答案 1 :(得分:4)

我认为一个问题是Android插件目前使用自己的源集模型。 sonarRunner插件不知道该模型,因此不能像通常那样预先配置。但是,您应该能够通过显式配置必要的声纳属性来自行提供此信息。

要了解sonarRunner插件预先配置了哪些Sonar属性,请查看SonarRunnerPlugin类的Groovydoc。 Sonar网站上提供了所有现有Sonar属性的列表。

PS:您应该只应用其中一个sonarsonarRunner插件。我建议使用后者(这是前者的继承者),即使它仍在孵化。