我真的“溢出”了试图让这些东西一起工作。我按照这里的指示进行操作:http://docs.sonarqube.org/display/PLUG/Android+Lint+Plugin 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 插件更可预测和稳定。