1

我尝试下载 SonarQube 并根据此链接执行每个步骤,SonarQube Setup 并在 build.gradle 中添加 SonarQube 插件

能够从 Command 执行 SonarQube,但是当我在 Build.Gradle 中添加 SonarCube 的插件时,当我尝试同步项目时,它会显示这样的错误,

错误#25:所有 buildscript {} 块必须出现在脚本中的任何 plugins {} 块之前

但是我在 build.gradle 中添加了 SonarQube 的插件和属性,

plugins {
id "org.sonarqube" version "7.2.1"
} 

并添加 SonarQube 的属性,

sonarqube {
properties {
    property "sonar.projectName", "MyApplication2"
    property "sonar.projectKey", "SQKey"
    property "sonar.sources","src/main/java"
    property "sonar.language","java"
    property "sonar.sourceEncoding", "UTF-8"
}}

Android Studio 版本是 3.1.3,Gradle 版本是 4.4,下载的 SonarQube 版本是 7.2.1

我的问题是,SonarQube 7.2.1 与 Gradle 版本 4.4 不兼容吗?

请在命令提示符中查看下图(SonarQube 已启动), SonarQube 在命令提示符下启动

关于如何使用 sonarqube 生成我当前项目的报告并在 cmd 提示符下执行命令的任何想法?

错误 #33: 在 plugins {} 块之前只允许 buildscript {} 和其他 plugins {} 脚本块,不允许其他语句

请找到以下 build.gradle 文件,

 buildscript {
repositories {
    jcenter()
    maven { url 'https://maven.fabric.io/public' }
    maven {
        url 'https://maven.google.com/'
        name 'Google'
    }
    google()
}
dependencies {
    classpath 'com.android.tools.build:gradle:3.1.3'
    classpath 'com.google.gms:google-services:2.1.0'
    classpath 'io.fabric.tools:gradle:1.+'
    classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.6'
}
}
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
apply plugin: "org.sonarqube"



repositories {
maven { url 'https://maven.fabric.io/public' }
}


apply plugin: 'com.google.gms.google-services'

plugins {
id "org.sonarqube" version "7.2.1"
}
sonarqube{
properties{
    property "sonar.projectName", "Example 16-8"
    property "sonar.projectKey", "example 16-6-key"
    property "sonar.sources","src/com.example.project"
    property "sonar.language","java"
    property "sonar.sourceEncoding", "UTF-8"
    property "sonar.jacoco.reportPath", 
    "build/jacoco/testDebugUnitTest.exec"
    //        property "sonar.exclusions", "src/main/java/com/foo/Foo.java"
    }}
    allprojects {
    repositories {
    jcenter()
    google()
    }
    }
    android {
    compileSdkVersion 27
    buildToolsVersion '27.0.3'
    }

我在上面的 build.gradle 文件中犯了什么错误以及如何运行 sonarQube 并生成我当前项目的报告?

而且,请找到下面的图片 - 当我在浏览器中添加http://localhost:9000/时,它没有显示我的任何 Android 项目。请参考此图片以参考 SonarQube 在我的浏览器中的外观,

当我在浏览器中添加 http://localhost:9000/ 时,它没有显示我的任何 Android 项目。 请参考这张图片 sonarqube 在我的浏览器中的外观,

尝试创建 Gradle.properties 文件以添加此行,

systemProp.sonar.host.url=http://localhost:9000
systemProp.sonar.login=admin
systemProp.sonar.password=admin

打开 Android Studio 终端并执行此操作,.\gradlew sonarqube

请参见下图,当我尝试在 Android Studio 终端(底部)上执行命令时,我收到了 Sonar Qube 异常。

当我尝试在终端上执行命令时,我收到了 Sonar Qube 异常。

4

2 回答 2

1

您得到的错误 #33 来自使用 plugins{} 块时必须遵循的严格语法,这在 Gradle 文档中进行了描述:https://docs.gradle.org/current/dsl/org.gradle.plugin。 use.PluginDependenciesSpec.html (参见“严格语法”部分) 在您的 build.gradle 脚本中,您在其他一些指令之后添加了“plugins{}”块,这是不允许的。我猜另一个错误 #25 来自相同的原因。

您应该尝试重写您的脚本并首先移动“buildscript”块,然后是“plugins”块,然后是脚本的其他部分

希望这可以帮助。

于 2018-08-13T14:07:49.293 回答
1
sonarqube {
    properties {
    property "sonar.host.url", "https://sonar-url"
    property "sonar.login", "login - token "

    property "sonar.projectName", "hello-world-service"
    property "sonar.projectKey", "hello-world-service"

    property "sonar.coverage.jacoco.xmlReportPaths", "$buildDir/reports/jacoco/test/jacocoTestReport.xml"
    property "sonar.junit.reportPaths", "$buildDir/test-results/test/"
    property "sonar.exclusions", "**/xmldefs/**,**/spec/api.json"
    property "sonar.cpd.exclusions", ", **/persistence/entity/**"
    property "sonar.dynamicAnalysis", "reuseReports"
    property "sonar.clover.reportPaths", "**/build/clover/clover.xml"
    property "sonar.java.coveragePlugin", "clover"
    property "sonar.sources", "src/main/kotlin"
    property "sonar.tests", "."
    property "sonar.test.inclusions", "**/*Test*/**"
    }
  }

// Build should fail if coverage less than minimum.
jacocoTestCoverageVerification.dependsOn jacocoTestReport
build.finalizedBy jacocoTestCoverageVerification

// 在你的 build.gradle 中添加这个

于 2020-01-29T13:33:22.267 回答