【发布时间】:2014-12-09 12:42:43
【问题描述】:
问题
我有一个可以正确编译和运行的 Android 项目。它由 Gradle “管理”,并由 Jenkins 持续构建。我想用 Sonar 分析我的代码质量。
声纳分析是使用sonarRunner Gradle 任务进行的。问题是声纳仍然告诉我有“0 个问题”......(我可以确保你有错误......我自己添加一个以确保......)。但是,它给了我其他信息,例如:代码行数、类数、cmets 和文档百分比、重复百分比、复杂性......就像 Android Lint 没有运行一样。
我尝试了什么
lint 就像一个魅力...:
在变体 armRelease 上运行 lint:发现 153 个问题
在变体 armDebug 上运行 lint:发现 153 个问题
在变体 x86Debug 上运行 lint:发现 153 个问题
在变体 x86Release 上运行 lint:发现 153 个问题
我尝试了很多我在互联网上阅读的东西,所以:
- Publishing Lint results to Sonar using Gradle
- http://www.gradle.org/docs/current/userguide/sonar_runner_plugin.html
- https://github.com/stephanenicolas/Quality-Tools-for-Android/blob/master/build.gradle
我遇到了一些不同的错误,例如“无法通过 ClassLoader 访问类 'android/content/res/Resources'”。或其他东西,但我从来没有能够得到正确的报告)。
详情
项目结构
- myProjectName
| build
| libs
| src
| debug
| main
| assets
| java
| com.myPackage...
| jniLibs
| res
| AndroidManifest.xml
| release
| build.gradle
| gradle.properties
| settings.gradle
settings.gradle
空
gradle.properties
空
build.gradle(删除无用部分)
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.2'
}
}
/**********************************
* Plugins declarations
**********************************/
apply plugin: 'com.android.application'
apply plugin: "sonar-runner"
/**********************************
* Sonar Runner configuration
**********************************/
sonarRunner {
sonarProperties {
property "sonar.host.url", "http://pic.url/sonar"
property "sonar.jdbc.url", "jdbc:mysql://pic.url/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true"
property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
property "sonar.jdbc.username", "*****"
property "sonar.jdbc.password", "*****"
property "sonar.language", "java"
property "sonar.profile", "MyCompany Android"
property "sonar.projectVersion", "1.0"
property "sonar.analysis.mode", "analysis"
properties["sonar.sources"] = android.sourceSets.main.java.srcDirs
properties["sonar.binaries"] = [file("build/intermediates/classes/x86/debug")]
}
}
/**********************************
* Android configuration
**********************************/
android {
compileSdkVersion 20
buildToolsVersion "20.0.0"
defaultConfig {
applicationId "com.myPackage..."
minSdkVersion 14
targetSdkVersion 16
versionCode 1
versionName "1.0"
}
lintOptions {
abortOnError false
}
}
因为我尝试了很多东西,所以我不知道接下来要尝试什么。如果您需要更多信息,请在 cmets 中询问。
最后信息:
- 声纳 3.7
- Gradle 1.12
- JVM 1.8.0_20 甲骨文
- 操作系统:Linux Fedora 20
编辑
gradle sonarRunner 日志(在 cmets 中询问):http://pastebin.com/uJwqpAkY
(所有的'***'都是为了隐藏公司名称,一切正常:))
【问题讨论】:
-
你能分享分析的日志吗?
-
如果你告诉我在哪里可以找到它,我会尽快完成
-
如何使用 sonar-runner 进行分析?您能提供 sonar-runner 命令的输出吗? (如果在 jenkins 上,这应该是工作日志)
-
我正在使用
gradle sonarRunner命令运行它。我将添加此命令的日志。 -
我添加了 sonarRunner 任务的日志