Sonarqube 未显示 Android Lint 的结果

Posted

技术标签:

【中文标题】Sonarqube 未显示 Android Lint 的结果【英文标题】:Sonar qube not showing results for Android Lint 【发布时间】:2016-12-13 18:03:32 【问题描述】:

这是我的 build.gradle,

apply plugin: 'org.sonarqube'

sonarqube 

    properties  

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

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

        property "sonar.language", "java"

        property "sonar.profile", "android Lint"

    

代码正在运行

属性“sonar.profile”,“声纳方式”。

但我需要这个用于 android Lint。获得零结果可能是什么问题。

【问题讨论】:

请参考***.com/questions/37831982/…。看起来 sonar.profile 已被弃用,我们可能需要直接从 UI 设置配置文件。 【参考方案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"

        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

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

【讨论】:

【参考方案2】:

它对我有用,并开始向声纳仪表板报告 android lint 问题:

我的 Sonar 版本是 7.6.2

将下方添加到声纳属性:

property "sonar.androidLint.reportPaths", "$project.buildDir/reports/lint-results.xml"

在上面运行之后:./gradlew lint sonarqube

它将显示在 Code Smells 部分 android:usesCleartextTraffic="true" 属性 usesCleartextTraffic 仅用于 API 级别 23 及更高级别(当前最小值为 21)android-lint

请参阅有关如何在声纳仪表板上显示外部分析仪报告的更多详细信息。

Import third party issues Sonar Documentation 检查 Kotlin 语言

External Analyzer Reports

【讨论】:

【参考方案3】:

Sonar Lint 不会将问题推送到 SonarQube 服务器。它旨在向开发人员提供有关本地工作区代码的即时反馈。

要显示 Sonarqube 服务器中的问题,您需要执行声纳分析。 例如使用声纳扫描仪(以前称为声纳亚军)

【讨论】:

【参考方案4】:

这些代码更改帮助我解决了这个问题。

在 Gradle 中,

我已经将 lint 文件添加到我的项目中。 我在 gardle 中添加了 lintOptions。 接下来在 Gradle 中为 sonarqube 添加了新属性。
apply plugin: 'com.android.application'
android 
    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
        // if true, only report errors
        ignoreWarnings true
    
    compileSdkVersion 24
    buildToolsVersion "23.0.1"
    useLibrary 'org.apache.http.legacy'
    defaultConfig 
        applicationId "com.pearson.writer"
        minSdkVersion 11
        targetSdkVersion 21
    
    buildTypes 
        release 
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        
    

buildscript 
    repositories 
        maven 
            url "https://plugins.gradle.org/m2/"
        
    
    dependencies 
        classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.0.1"
    

apply plugin: 'org.sonarqube'
sonarqube 
    properties  
        property "sonar.projectName", "Writer40 sonarway"
        property "sonar.host.url", "http://...:9000/sonar"
        property "sonar.sources", "src"
        property "sonar.import_unknown_files", "true"
        property "sonar.language", "java"
        property "sonar.profile", "Android Lint"
        property "sonar.android.lint.report", "/data/jenkins/workspace/SonarJobs/PearsonWriterSonar/writer40/build/outputs/lint-results-debug.xml"
    

dependencies 
    compile files('libs/android-async-http-1.4.4.jar')
    compile files('libs/android-support-v4.jar')
    compile files('libs/libGoogleAnalyticsServices.jar')
    compile files('libs/universal-image-loader-1.7.0.jar')

接下来更改了 Jenkins 中的一些配置。(请看图片)

在 jenkins 中运行声纳之前,命令运行 lint。

然后我得到了一个与 Android Lint 相关的输出

谢谢。

【讨论】:

【参考方案5】:

您必须将分析模式提到为发布才能将结果提交到服务器。

属性“sonar.analysis.mode”、“发布”

【讨论】:

以上是关于Sonarqube 未显示 Android Lint 的结果的主要内容,如果未能解决你的问题,请参考以下文章

nUnit 的结果未显示在 SonarQube 中

用于 Typescript 的 Sonarqube 上未显示代码覆盖率

SonarQube 托管站点的常规设置下未显示 FXcop 选项

Karma 代码覆盖率未在 Sonarqube 中显示

使用 rspec 的 Sonarqube 未显示单元测试的计数

SonarQube 覆盖范围未显示