Java 用Lint和SonarQube分析Android项目
我真的有一个'溢出'试图使这些东西一起工作。我按照这里的指示:最终得到了一台SonarQube 5.1.1服务器,安装了Android Lint插件1.1。然后,我将我的多模块Gradle构建配置为与SonarQube插件一起使用:请参阅下面根配置中的代码片段Java 用Lint和SonarQube分析Android项目,java,android,gradle,sonarqube,android-gradle-plugin,Java,Android,Gradle,Sonarqube,Android Gradle Plugin,我真的有一个'溢出'试图使这些东西一起工作。我按照这里的指示:最终得到了一台SonarQube 5.1.1服务器,安装了Android Lint插件1.1。然后,我将我的多模块Gradle构建配置为与SonarQube插件一起使用:请参阅下面根配置中的代码片段 plugins { id 'org.sonarqube' version '1.0' } sonarqube { properties { property 'sonar.host.url', 'son
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 sonaqube
task来执行分析。因此,我得到了大量关于“retrolambda”项目的Lint错误(java.lang.UnsupportedOperationException:Unknown ASTNode child:LambdaExpression
),这是很正常的,每个模块都有Lint results.xml
(附带HTML版本)文件,其中包含发现问题的描述。报告称,共发现8个错误和434个警告。但当sonarqube插件试图将结果上传到sonarqube服务器时,出现了问题。日志中充满了“找不到文件”和“找不到规则”消息。当处理结束时,SonarQube服务器上的项目没有报告任何问题
我想知道,出了什么问题?我检查了路径,所有文件都在那里。我看了所有我能达成的讨论,似乎我的配置是正确的,我做的每件事都是正确的。有没有人有任何线索,我遗漏了什么,还有什么需要检查?欢迎提出任何建议或想法
如果有一种方法可以使用外部SonarQube Runner导入lint数据,我也会很高兴,因为这个工具似乎比Gradle插件更容易预测和稳定。你的Gradle设置似乎很好,你在SonarQube服务器上安装了安卓插件了吗 我看不到你的问题上的这一步,如果不是转到设置->系统->更新中心并安装Android插件
安装后,您需要重新启动SonarQube服务器并重新运行sonar runner。我成功地完成了一个多模块android项目。因为完整的构建文件占用了太多的空间,所以我只在这里显示相关部分 在父项目的build.gradle中,我设置: 在我设置的应用程序项目(和任何其他子项目)中:
这是SonarQube插件开始分析项目的最低设置。lint报告中的路径是否正确?它们是相对的还是绝对的?单个模块的分析是否成功?仅供参考,以下是为Sonar Runner分析配置多模块项目的文档:您能否分享您提到的关于无法找到文件/规则的错误消息?可能有助于找出问题所在。关于使用sonar runner导入lint报告的想法:如果您为sonar-runner.Wow配置
sonar.android.lint.report
属性,这应该是可行的。我一直在寻找解决办法,这让我很开心。尽管AndroidStudio仍然抱怨sonarqube的“属性”无法应用于groovy.lang.Closure。。。WTF sonar.profile属性已被删除,现在必须通过Sonarqube UI进行设置:*出错原因:任务执行失败::app:compiledBugJavaWithJavaC'>javax/xml/bind/JAXBException我在运行gradlew sonarqube时遇到了这个错误。
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"
}
}