用Lint和SonarQube分析Android项目

我真的有一个“溢出”试图让这些东西一起工作。 我遵循这里的指令: http ://docs.sonarqube.org/display/PLUG/Android+Lint+Plugin最后得到一个安装了Android Lint插件1.1的SonarQube 5.1.1服务器。 然后,我configuration了我的多模块Gradle构build以使用SonarQube插件:请参阅下面的根configuration的代码片段。

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”项目( java.lang.UnsupportedOperationException: Unknown ASTNode child: LambdaExpression )的Lint错误,这是非常正常的,并且每个模块的lint-results.xml (伴随着HTML版本)文件包含发现问题的描述。 报告说,有8个错误和434个警告被发现。 但sonarqube插件尝试将结果上传到SonarQube服务器时,出现了问题。 该日志充满了“无法find文件”和“无法find规则”消息。 处理结束后,SonarQube服务器上的项目没有报告问题。

我想知道,错了什么? 我检查了path,所有的文件都在那里。 我仔细查看了所有可能达到的讨论结果,似乎我的configuration是正确的,我做的都是正确的。 有没有人有任何线索,我错过了什么,需要检查什么? 任何build议或想法是受欢迎的。

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

我有一个multimodule android项目成功。 由于完整的构build文件占用太多的空间,我只在这里显示相关的部分。

在我设置的父项目的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插件开始分析项目的最低设置。

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

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

在这里输入图像说明

一旦安装,你需要重新启动你的SonarQube服务器,并重新运行声纳运行。