Sonar Android Lint未发现匹配问题

Sonar Android Lint未发现匹配问题,android,gradle,sonarqube,lint,android-lint,Android,Gradle,Sonarqube,Lint,Android Lint,我遇到了以下问题:我已经安装了SonarQube和Android插件,具有“Android Lint”质量配置文件。当我使用“Android Lint”配置文件执行build.gradle脚本时,sonar runner插件运行良好,但在SonarQube中,我看不到任何匹配问题,只有零 然而,当我加入另一个配置文件——而不是“Android Lint”——时,我可以看到很多问题。同样在我的android SDK中,当应用它自己的lint时,我可以看到157个问题。可能是什么 sonar - v

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

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

sonar - version 3.7.4; android plugin - version 0.1 声纳-版本3.7.4;
android插件-版本0.1您的
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插件是如何决定是否在其中运行分析的。

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

build/intermediates/bundles/release,src/main/java


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

更改声纳属性如下:

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



}
}
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
}
要创建lint-results-debug.xml,必须在studio终端上运行以下命令:

./gradlew lint
它将生成丢失的XML报告。谨慎地说,它可以为每个构建变量生成报告(默认情况下,Debug将生成build/outputs/lint results Debug.xml)。所以你可以调用lintDebug,lintRelease。。。取决于构建变量

并将棉绒属性更改为:

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



}
}
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

您将得到显示结果的本地文件报告,该报告实际上在服务器上托管

您是否能够找到最终解决方案?不,我们正在Hudson/Jenkins中使用LINT输出,并使用Sonar进行传统的非Android分析。有点糟糕,但事实就是这样。你能检查一下这个吗