我真的得到了一个溢出的'试图让这些东西一起工作。我按照这里的说明进行操作: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插件更具可预测性和稳定性。
答案 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)