5

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

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

声纳 - 版本 3.7.4;
安卓插件 - 版本 0.1
4

3 回答 3

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 Plugin 如何确定是否运行分析。

于 2014-07-06T18:35:01.480 回答
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,您必须在工作室终端上运行以下命令:

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

您将得到显示的结果,它实际上是实际托管在服务器上的本地文件报告在此处输入图像描述

于 2017-04-13T04:39:44.777 回答
0

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

构建/中间体/捆绑包/发布,src/main/java

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

于 2014-08-19T20:59:04.307 回答