使用Lint和SonarQube分析Android项目

我真的得到了一个“溢出”,试图让这些东西一起工作。我按照这里的指示: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'
    }
}

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

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

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


答案 1

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

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

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

在应用程序项目(以及任何其他子项)中,我设置了:

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

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


答案 2

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

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

enter image description here

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


推荐