我已经尝试了一段时间,让声纳检查和分析我的android项目。但到目前为止没有运气。我试图在声纳中实现的项目是一个测试项目,有两个类和一些测试方法。所有这些都塞在项目的src目录中。
所以这就是我到目前为止所得到的。
包含以下设置的build.gradle文件:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.6.+'
}
}
apply plugin: 'android'
apply plugin: 'sonar'
apply plugin: "sonar-runner"
android {
buildToolsVersion "18.0.1"
compileSdkVersion 18
defaultConfig {
minSdkVersion 14
targetSdkVersion 16
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['com.example.GradleAndroidTest']
resources.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
instrumentTest.setRoot('test')
}
}
sonar {
server {
url = "http://sonar.someserver.int"
}
database {
url = "jdbc:mysql://sonar.someserver.int:3306/sonar"
driverClassName = "com.mysql.jdbc.Driver"
username = "*****"
password = "*****"
}
}
sonarRunner {
sonarProperties {
property "sonar.host.url", "http://sonar.someserver.int"
property "sonar.jdbc.url", "jdbc:mysql://sonar.someserver.int:3306/sonar"
property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
property "sonar.jdbc.username", "*****"
property "sonar.jdbc.password", "*****"
}
}
要测试这个项目,我在命令提示符下输入项目的根目录,然后输入:
gradle sonarRunner此后,该项目在sonarQube上显示,但没有显示统计数据。没有代码行,没有。我的问题是。我忘记了什么吗?难道我做错了什么。
我对gradle和声纳没有多少经验,所以现在我向那些有帮助的人寻求帮助。希望你能帮忙!
答案 0 :(得分:10)
我发现了我做错了什么。我忘了添加几个强制属性。
sonarProperties {
property "sonar.host.url", "http://sonar.someserver.int"
property "sonar.jdbc.url", "jdbc:mysql://sonar.someserver.int:3306/sonar"
property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
property "sonar.jdbc.username", "*****"
property "sonar.jdbc.password", "*****"
//I added these properties to my gradle.build
property "sonar.projectKey", "GradleAndroidTest"
property "sonar.projectName", "GradleAndroidTest"
property "sonar.projectVersion", "V1.0"
property "sonar.language", "java"
property "sonar.sources", "src"
property "sonar.binaries", "build"
}
正如@Peter Niederwieser所说,该插件无法预先配置这些内容,所以我不得不手动添加它们。
我也删除了声纳插件,而是使用了声纳转轮插件。
答案 1 :(得分:4)
我认为一个问题是Android插件目前使用自己的源集模型。 sonarRunner
插件不知道该模型,因此不能像通常那样预先配置。但是,您应该能够通过显式配置必要的声纳属性来自行提供此信息。
要了解sonarRunner
插件预先配置了哪些Sonar属性,请查看SonarRunnerPlugin
类的Groovydoc。 Sonar网站上提供了所有现有Sonar属性的列表。
PS:您应该只应用其中一个sonar
和sonarRunner
插件。我建议使用后者(这是前者的继承者),即使它仍在孵化。