使用Lint和SonarQube分析Android项目

时间:2015-08-12 15:23:15

标签: java android gradle sonarqube android-gradle

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

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

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

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

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

2 个答案:

答案 0 :(得分:6)

我在多模块android项目中取得了成功。由于完整的构建文件占用太多空间,因此我只在此处显示相关部分。

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

buildscript {
    ...
    dependencies { classpath 'com.android.tools.build:gradle:1.5.0'
    ...
}
plugins { id "org.sonarqube" version "1.1" }

在app项目(以及任何其他孩子)中,我设置了:

sonarqube {
    properties {
        property "sonar.profile", "Android Lint"
        property "sonar.sources", "./src/main/java"
    }
}

这是SonarQube插件开始分析项目的最低设置。

答案 1 :(得分:1)

您的gradle设置似乎很好,您是否在SonarQube服务器上安装了Android插件。

我没有看到您的问题,如果没有转到设置 - >系统 - >更新中心并安装Android插件。

enter image description here

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