Sonar Android Lint未找到匹配问题

时间:2014-04-04 09:57:34

标签: android gradle sonarqube lint android-lint

我遇到了以下问题:我已经使用“Android Lint”质量配置文件安装了SonarQube和Android插件。当我使用“Android Lint”配置文件执行我的 build.gradle 脚本时,sonar-runner插件工作正常,但在SonarQube中我看不到找到匹配的问题,只有零。

然而,当我包含另一个配置文件 - 而不是“Android Lint”时 - 我可以看到很多问题。同样在我的android SDK中应用它自己的lint时我可以看到157个问题。它可以是什么?

sonar - version 3.7.4;
android plugin - version 0.1

3 个答案:

答案 0 :(得分:3)

您的sonar.sources媒体资源应指向 AndroidManifest.xml 文件的根目录。例如。如果您的 AndroidManifest.xml 文件位于src/main,则您的build.gradle文件应包含:

sonarRunner {
    sonarProperties {
        ...
        property "sonar.sources", "src/main"
        property "sonar.profile", "Android Lint"
        ...
    }
}

如果您需要sonar.sources中的更多路径,可以将它们设为逗号分隔列表。

您可以找到Sonar Android插件如何确定是否在其source code中运行分析。

答案 1 :(得分:1)

更改您的声纳属性:

apply plugin: "org.sonarqube"

sonarqube {

properties {

    property "sonar.projectName", "appa"

    property "sonar.projectKey", "appa_app"

    property "sonar.projectVersion", "1.0"

    property "sonar.analysis.mode", "publish"

    property "sonar.language", "java"

    property 'sonar.sourceEncoding', "UTF-8"

    property "sonar.sources", "./src/main"

    //property "sonar.exclusions", "**/*Entity.java"

  //  property "sonar.exclusions", "src/main/java/com/apparkb/model/**, **/*Entity.java"

    property "sonar.host.url", "http://192.168.21.33:9000"

    property "sonar.login", "admin"

    property "sonar.profile", "testlint"//use your quality profile instead

    property 'sonar.import_unknown_files', true

    property "sonar.android.lint.report", "./build/outputs/lint-results-debug.xml"

    property "sonar.password", "admin"

    property "sonar.java.binaries", "build/"



}
}

要创建lint-results-debug.xml,您必须在studio终端上运行以下命令:

./gradlew lint

它将生成缺少的XML报告。要小心,它可以为每个构建变体生成一个报告(默认情况下,Debug将生成build / outputs / lint-results-debug.xml)。所以你可以调用lintDebug,lintRelease ...依赖你的构建变体。

并将lint属性更改为:

lintOptions { // set to true to turn off analysis progress reporting by lint

    quiet true

    // if true, stop the gradle build if errors are found

    abortOnError false

    // do not ignore warnings

    warningsAsErrors true
}

现在如果您运行

./gradlew sonarqube

您将获得结果显示其实际上是在服务器上托管的本地文件报告enter image description here

答案 2 :(得分:0)

不幸的是,如果你只是将sonar.sources指向src / main,你将会遇到所有源码的问题,因为你很可能不会设置minSdkVersion和targetSdkVersion(它来自gradle)。我已经尝试将我的源代码设置为:

构建/中间体/捆绑/释放,SRC /主/ JAVA

但由于API级别,我仍然会收到大量(无效)错误。