Sonar,Gradle和Android返回0期

mit*_*rop 5 android gradle sonarqube

问题

我有一个编译并正常工作的Android项目.它由Gradle"管理"并不断与Jenkins一起构建.我想用Sonar分析我的代码质量.

声纳分析是使用sonarRunnerGradle任务完成的.问题是,声纳仍然告诉我有"0问题"......(我可以确保你有错误......我自己加一个以确保......).但是,它给了我其他信息,例如:代码行数,类数,注释和文档百分比,重复百分比,复杂性......就像Android Lint没有运行一样.

我尝试了什么

lint 奇迹般有效... :

Ran lint on variant arm发布:找到153个问题

Ran lint on variant armDebug:发现153个问题

Ran lint on variant x86Debug:找到153个问题

Ran lint on variant x86Release:发现153个问题

我尝试了很多我通过互联网阅读的内容和SO:

我有一些不同的错误,如"类'android/content/res/Resources'无法通过ClassLoader访问." 或其他什么,但我从来没有能够得到正确的报告).

细节

项目结构

- myProjectName
    | build
    | libs
    | src
        | debug
        | main
            | assets
            | java
                | com.myPackage...
            | jniLibs
            | res
            | AndroidManifest.xml
        | release
    | build.gradle
    | gradle.properties
    | settings.gradle
Run Code Online (Sandbox Code Playgroud)

settings.gradle


gradle.properties


build.gradle(删除了无用的部分)

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.12.2'
    }
}

/**********************************
 * Plugins declarations
 **********************************/
apply plugin: 'com.android.application'
apply plugin: "sonar-runner"

/**********************************
 * Sonar Runner configuration
 **********************************/
sonarRunner {
    sonarProperties {
        property "sonar.host.url", "http://pic.url/sonar"
        property "sonar.jdbc.url", "jdbc:mysql://pic.url/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true"
        property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
        property "sonar.jdbc.username", "*****"
        property "sonar.jdbc.password", "*****"

        property "sonar.language", "java"
        property "sonar.profile", "MyCompany Android"
        property "sonar.projectVersion", "1.0"
        property "sonar.analysis.mode", "analysis"

        properties["sonar.sources"] = android.sourceSets.main.java.srcDirs
        properties["sonar.binaries"] = [file("build/intermediates/classes/x86/debug")]
    }
}

/**********************************
 * Android configuration
 **********************************/
android {
    compileSdkVersion 20
    buildToolsVersion "20.0.0"

    defaultConfig {
        applicationId "com.myPackage..."
        minSdkVersion 14
        targetSdkVersion 16
        versionCode 1
        versionName "1.0"
    }

    lintOptions {
        abortOnError false
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试了很多东西时,我不知道下一步该尝试什么.如果您需要更多信息,请在评论中提问.

最后信息:

  • 声纳3.7
  • Gradle 1.12
  • JVM 1.8.0_20 Oracle
  • 操作系统:Linux Fedora 20

编辑

gradle sonarRunner日志(在评论中提问):http://pastebin.com/uJwqpAkY

(所有'***'都在这里隐藏公司名称,一切正常:))

ben*_*ico 3

在您的分析过程中似乎AndroidLintSensor没有执行。Sensor AndroidLintSensor...(否则您会在日志中的某处看到该行。

这可能是由于多种原因造成的: 您的个人资料中是否包含 Android 规则?您的项目必须在您的基本目录或源目录中具有 java 文件和 android 清单,以触发传感器的执行(这将执行 android lint)。

(如果您好奇,这里是触发传感器执行的代码部分:AndroidLintSensor.java