使用Lint和SonarQube分析Android项目

svi*_*lim 50 java android gradle android-gradle-plugin sonarqube

我真的有一个"溢出"试图使这些东西一起工作.我按照这里的指示:http://docs.sonarqube.org/display/PLUG/Android+Lint+Plugin,最后得到一个安装了Android Lint插件1.1的SonarQube 5.1.1服务器.然后我配置了我的多模块Gradle构建以使用SonarQube插件:请参阅下面的root配置中的代码片段.

plugins {
    id 'org.sonarqube' version '1.0'
}

sonarqube {
    properties {

        property 'sonar.host.url', 'sonarqube-server:9000'
        property 'sonar.jdbc.url', 'jdbc:mysql://sonarqube-db:3306/sonar?useUnicode=true&characterEncoding=utf8'
        property 'sonar.jdbc.driverClassName', 'com.mysql.jdbc.Driver'
        property 'sonar.jdbc.username', 'sonar'
        property 'sonar.jdbc.password', 'sonar'
        property 'sonar.sourceEncoding', 'UTF-8'
        property 'sonar.login', 'admin'
        property 'sonar.password', 'admin'

        property 'sonar.profile', 'Android Lint'

        property 'sonar.import_unknown_files', true
        property 'sonar.android.lint.report', 'build/outputs/lint-results.xml'
    }
}
Run Code Online (Sandbox Code Playgroud)

之后我运行lint sonarqube任务来执行分析.因此,我得到了关于'retrolambda'项目(java.lang.UnsupportedOperationException: Unknown ASTNode child: LambdaExpression)的大量Lint错误,这是非常正常的,并且lint-results.xml(每个模块附带HTML版本)文件包含所发现问题的描述.该报告说,发现了8个错误和434个警告.但是当sonarqube插件试图将结果上传到SonarQube服务器时出现问题.日志中充满了"无法找到文件"和"无法找到规则"消息.当处理结束时,我的SonarQube服务器项目没有报告任何问题.

我想知道,出了什么问题?我检查了路径,所有文件都在那里.我浏览了所有可以达到的讨论,似乎我的配置是正确的,我做的一切都是正确的.有没有人有任何线索,我错过了什么,需要检查什么?欢迎任何建议或想法.

如果有一种方法可以使用外部SonarQube Runner导入lint数据,我也会很高兴,因为这个工具似乎比Gradle插件更可预测和更稳定.

Jan*_*nPl 6

我成功使用了一个多模块的android项目.由于完整的构建文件占用太多空间,因此我仅在此处显示相关部分.

在父项目的build.gradle中,我设置:

buildscript {
    ...
    dependencies { classpath 'com.android.tools.build:gradle:1.5.0'
    ...
}
plugins { id "org.sonarqube" version "1.1" }
Run Code Online (Sandbox Code Playgroud)

在app项目(和任何其他孩子)我设置:

sonarqube {
    properties {
        property "sonar.profile", "Android Lint"
        property "sonar.sources", "./src/main/java"
    }
}
Run Code Online (Sandbox Code Playgroud)

这是SonarQube插件开始分析项目的最小设置.

  • sonar.profile 属性已被删除,现在必须通过 Sonarqube UI 设置:https://jira.sonarsource.com/browse/SONAR-5370 (2认同)

Abh*_*dar 1

您的 gradle 设置看起来不错,您是否在 SonarQube 服务器上安装了 Android 插件。

我没有看到你的问题的那一步,如果没有的话,请转到“设置”->“系统”->“更新中心”并安装 Android 插件。

在此输入图像描述

安装完成后,您需要重新启动 SonarQube 服务器并重新运行 sonar-runner。