我将SonarQube集成到我的android项目中,但无法执行生成报告的命令。我就是这样做的:
环境:
项目分级:
buildscript {
ext.kotlin_version = '1.3.71'
repositories {
google()
mavenCentral()
maven { url 'https://maven.fabric.io/public' } //Crashlytics
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:4.0.0-beta03'
...
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.8"
}
}
allprojects {
repositories {
google()
mavenCentral()
maven { url 'https://maven.google.com' }
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
App模块级:
apply plugin: 'org.sonarqube'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'io.fabric'
apply plugin: 'kotlin-kapt'
apply plugin: 'com.google.firebase.appdistribution'
android {
compileSdkVersion 29
buildToolsVersion '29.0.3'
defaultConfig {
applicationId "<my app id here>"
minSdkVersion 21
targetSdkVersion 29
versionName "1.0"
versionCode 1
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
vectorDrawables.useSupportLibrary = true
}
buildTypes {
debug {
debuggable true
minifyEnabled false
shrinkResources false
testCoverageEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
manifestPlaceholders = [backup: "false"]
manifestPlaceholders = [backup : "false"]
}
release {
minifyEnabled true
shrinkResources true
testCoverageEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
manifestPlaceholders = [backup: "true"]
signingConfig signingConfigs.release
}
dexOptions {
javaMaxHeapSize "4g"
}
}
lintOptions {
abortOnError false
}
flavorDimensions "data"
productFlavors {
development {
dimension "data"
}
staging {
dimension "data"
}
prod {
dimension "data"
}
}
buildFeatures{
dataBinding = true
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
testImplementation 'junit:junit:4.12'
implementation fileTree(include: ['*.jar'], dir: 'libs')
androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', {
exclude group: 'com.android.support', module: 'support-annotations'
})
/*Android Support Libraries*/
...
/*Firebase Libraries */
...
/*Other 3rd party libs*/
...
kapt "com.sun.xml.bind:jaxb-core:2.3.0.1"
kapt "javax.xml.bind:jaxb-api:2.3.1"
kapt "com.sun.xml.bind:jaxb-impl:2.3.2"
annotationProcessor "com.sun.xml.bind:jaxb-core:2.3.0.1"
annotationProcessor "javax.xml.bind:jaxb-api:2.3.1"
}
sonarqube {
properties {
property "sonar.projectName", "<ProjectName>"
property "sonar.projectKey", "<project_key>"
property "sonar.tests", ["src/test/java"]
property "sonar.test.inclusions", "**/*Test*/**"
property "sonar.sourceEncoding", "UTF-8"
property "sonar.sources", "src/main/java"
property "sonar.exclusions", '**/*Test*/**,' +
'*.json,' +
'**/*test*/**,' +
'**/.gradle/**,' +
'**/R.class'
}
}
apply plugin: 'com.google.gms.google-services'
我下载并解压缩SonarQube 8.2,然后运行以下命令以成功启动它:
~/Documents/sonarqube/bin/macosx-universal-64/sonar.sh console
然后,我可以登录到http:localhost:9000
并使用指定的项目密钥安装新项目,并返回令牌。
我复制了Sonar生成的命令,并在终端中运行,但它总是抛出异常。
命令:
./gradlew sonarqube \
-Dsonar.projectKey=gluu_android \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=e694bbca8f20ad86fd02b5620521f92073d411ef
例外:
Exception in thread "Build Event Notification" java.lang.IllegalArgumentException: Host name may not be empty
at com.crashlytics.reloc.org.apache.http.util.Args.containsNoBlanks(Args.java:84)
at com.crashlytics.reloc.org.apache.http.HttpHost.<init>(HttpHost.java:80)
at com.crashlytics.reloc.org.apache.http.HttpHost.<init>(HttpHost.java:99)
at com.crashlytics.api.net.proxy.ProxySettings.getConfig(ProxySettings.java:39)
at com.crashlytics.api.RestfulWebApi.notifyBuildEvent(RestfulWebApi.java:1439)
at com.crashlytics.api.RestfulWebApi.access$100(RestfulWebApi.java:74)
at com.crashlytics.api.RestfulWebApi$10.run(RestfulWebApi.java:1371)
at java.base/java.lang.Thread.run(Thread.java:834)
声纳背景线程的异常:
Error Details
java.lang.IllegalStateException: Unrecoverable indexation failures: 1 errors among 1 requests
at org.sonar.server.es.IndexingListener$1.onFinish(IndexingListener.java:39)
at org.sonar.server.es.BulkIndexer.stop(BulkIndexer.java:122)
at org.sonar.server.measure.index.ProjectMeasuresIndexer.doIndex(ProjectMeasuresIndexer.java:157)
at org.sonar.server.measure.index.ProjectMeasuresIndexer.indexOnAnalysis(ProjectMeasuresIndexer.java:82)
at org.sonar.ce.task.projectanalysis.step.IndexAnalysisStep.execute(IndexAnalysisStep.java:45)
at org.sonar.ce.task.step.ComputationStepExecutor.executeStep(ComputationStepExecutor.java:81)
at org.sonar.ce.task.step.ComputationStepExecutor.executeSteps(ComputationStepExecutor.java:72)
at org.sonar.ce.task.step.ComputationStepExecutor.execute(ComputationStepExecutor.java:59)
at org.sonar.ce.task.projectanalysis.taskprocessor.ReportTaskProcessor.process(ReportTaskProcessor.java:81)
at org.sonar.ce.taskprocessor.CeWorkerImpl$ExecuteTask.executeTask(CeWorkerImpl.java:209)
at org.sonar.ce.taskprocessor.CeWorkerImpl$ExecuteTask.run(CeWorkerImpl.java:191)
at org.sonar.ce.taskprocessor.CeWorkerImpl.findAndProcessTask(CeWorkerImpl.java:158)
at org.sonar.ce.taskprocessor.CeWorkerImpl$TrackRunningState.get(CeWorkerImpl.java:133)
at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:85)
at org.sonar.ce.taskprocessor.CeWorkerImpl.call(CeWorkerImpl.java:53)
at com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:125)
at com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:69)
at com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:78)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
```
发布于 2020-04-01 05:38:20
在这些步骤之后,我终于解决了这个问题:
从https://www.postgresql.org/
https://stackoverflow.com/questions/60930535
复制相似问题