SonarQube 没有从 Android gradle 项目收集问题

SonarQube is not collecting issues from Android gradle project

当我启动时 ./gradlew sonar 它运行分析器并加载文件,项目被添加到 sonarqube 数据库,其中包含文件列表、复杂性等,但没有为项目创建任何问题。 Android Lint(添加了 147 条规则)被设置为默认问题列表,SonarQube 方式被设置为默认(也是唯一)质量门。

完整日志:

sudokusolver git:(master) ✗ ./gradlew sonar
:app:sonarqube
INFO: Default locale: "en_GB", source code encoding: "UTF-8" (analysis is platform dependent)
INFO: Work directory: /home/agilob/Projects/sudokusolver/app/build/sonar
INFO: SonarQube Server 5.1.2
11:48:48.324 INFO  - Load global repositories
11:48:48.552 INFO  - Load global repositories (done) | time=234ms
11:48:48.554 INFO  - Server id: 20150807203003
11:48:48.557 INFO  - User cache: /home/agilob/.sonar/cache
11:48:48.565 INFO  - Install plugins
11:48:48.949 INFO  - Install JDBC driver
11:48:48.962 INFO  - Create JDBC datasource for jdbc:h2:tcp://localhost/sonar
11:48:50.575 INFO  - Initializing Hibernate
11:48:52.689 INFO  - Load project repositories
11:48:52.925 INFO  - Load project repositories (done) | time=236ms
11:48:52.926 INFO  - Load project settings
11:48:53.265 INFO  - Load technical debt model
11:48:53.299 INFO  - Apply project exclusions
11:48:53.555 WARN  - 'sonar.dynamicAnalysis' is deprecated since version 4.3 and should no longer be used.
11:48:53.574 WARN  - SCM provider autodetection failed. No SCM provider claims to support this project. Please use sonar.scm.provider to define SCM of your project.
11:48:53.576 INFO  - -------------  Scan SudokuSolver
11:48:53.583 INFO  - Load module settings
11:48:53.727 INFO  - Language is forced to java
11:48:53.739 INFO  - Load rules
11:48:54.981 INFO  - Base dir: /home/agilob/Projects/sudokusolver/app
11:48:54.981 INFO  - Working dir: /home/agilob/Projects/sudokusolver/app/build/sonar
11:48:54.982 INFO  - Source paths: src/main
11:48:54.982 INFO  - Test paths: src/androidTest
11:48:54.983 INFO  - Source encoding: UTF-8, default locale: en_GB
11:48:54.983 INFO  - Index files
11:48:55.116 INFO  - 35 files indexed
11:48:55.304 INFO  - Quality profile for java: Android Lint
11:48:55.511 WARN  - ----------------------------------------------------------------
11:48:55.512 WARN  - Sonargraph: Skipping projectSudokuSolver [SusokuSolver], since no Sonargraph rules are activated in current SonarQube quality profile.
11:48:55.512 WARN  - ----------------------------------------------------------------
11:48:55.512 INFO  - Trying to guess scm provider from project layout...
11:48:55.513 INFO  - Found SCM type: git
11:48:55.523 INFO  - Sensor JavaSquidSensor
11:48:56.119 INFO  - Java Main Files AST scan...
11:48:56.122 INFO  - 34 source files to be analyzed
11:48:59.551 INFO  - Java Main Files AST scan done: 3432 ms
11:48:59.552 INFO  - 34/34 source files have been analyzed
11:48:59.552 WARN  - Java bytecode has not been made available to the analyzer. The org.sonar.java.bytecode.visitor.DependenciesVisitor@6e61d22c are disabled.
11:48:59.553 INFO  - Java Test Files AST scan...
11:48:59.553 INFO  - 1 source files to be analyzed
11:48:59.653 INFO  - Java Test Files AST scan done: 100 ms
11:48:59.653 INFO  - 1/1 source files have been analyzed
11:48:59.660 INFO  - Sensor JavaSquidSensor (done) | time=4137ms
11:48:59.660 INFO  - Sensor Lines Sensor
11:48:59.673 INFO  - Sensor Lines Sensor (done) | time=13ms
11:48:59.674 INFO  - Sensor QProfileSensor
11:48:59.680 INFO  - Sensor QProfileSensor (done) | time=6ms
11:48:59.680 INFO  - Sensor InitialOpenIssuesSensor
11:48:59.689 INFO  - Sensor InitialOpenIssuesSensor (done) | time=9ms
11:48:59.689 INFO  - Sensor ProjectLinksSensor
11:48:59.701 INFO  - Sensor ProjectLinksSensor (done) | time=12ms
11:48:59.702 INFO  - Sensor VersionEventsSensor
11:48:59.721 INFO  - Sensor VersionEventsSensor (done) | time=19ms
11:48:59.722 INFO  - Sensor SurefireSensor
11:48:59.723 INFO  - parsing /home/agilob/Projects/sudokusolver/app/target/surefire-reports
11:48:59.724 ERROR - Reports path not found or is not a directory: /home/agilob/Projects/sudokusolver/app/target/surefire-reports
11:48:59.724 INFO  - Sensor SurefireSensor (done) | time=2ms
11:48:59.725 INFO  - Sensor ScmStatsSensor
11:48:59.726 INFO  - Collection SCM Change log for the last 0 days
11:48:59.773 INFO  - Executing: /bin/sh -c cd /home/agilob/Projects/sudokusolver/app && git whatchanged '--until=2015-08-08 10:48:59 +0000' --date=iso -- /home/agilob/Projects/sudokusolver/app
11:48:59.774 INFO  - Working directory: /home/agilob/Projects/sudokusolver/app
11:49:00.107 INFO  - Sensor ScmStatsSensor (done) | time=382ms
11:49:00.107 INFO  - Sensor SCM Sensor
11:49:00.108 INFO  - No SCM system was detected. You can use the 'sonar.scm.provider' property to explicitly specify it.
11:49:00.108 INFO  - Sensor SCM Sensor (done) | time=1ms
11:49:00.108 INFO  - Sensor CPD Sensor
11:49:00.109 INFO  - JavaCpdEngine is used for java
11:49:00.110 INFO  - Cross-project analysis disabled
11:49:00.395 INFO  - Sensor CPD Sensor (done) | time=287ms
11:49:00.419 INFO  - Loaded quality gate 'SonarQube way'
11:49:00.456 INFO  - Compare to previous analysis (2015-08-08)
11:49:00.458 INFO  - Compare over 30 days (2015-07-09, analysis of Fri Aug 07 23:19:57 BST 2015)
11:49:01.391 INFO  - Execute decorators...
11:49:02.036 INFO  - Store results in database
11:49:02.904 INFO  - Analysis reports generated in 24ms, dir size=4 KB
11:49:02.934 INFO  - Analysis reports compressed in 30ms, zip size=14 KB
11:49:02.964 INFO  - Analysis reports sent to server in 30ms
11:49:02.964 INFO  - ANALYSIS SUCCESSFUL, you can browse http://localhost:9000/dashboard/index/SusokuSolver
11:49:02.964 INFO  - Note that you will be able to access the updated dashboard once the server has processed the submitted analysis report.

BUILD SUCCESSFUL

Total time: 24.204 secs

我的配置添加到主gradle.build

buildscript {
dependencies {
    classpath "org.sonarqube.gradle:gradle-sonarqube-plugin:1.0"
}
}

我的配置添加到app/gradle.build

apply plugin: "org.sonarqube"

sonarqube {
properties {
    property "sonar.projectName", "SudokuSolver"
    property "sonar.projectKey", "SusokuSolver"
    property "sonar.host.url", "http://localhost:9000"
    property "sonar.projectVersion", "1.0"
    property "sonar.language", "java"
    property "sonar.sources", "src/main/"
    property "sonar.tests", "src/androidTest/"
}
}

SonarQube是在嵌入式数据库上启动的,只是为了测试,但我认为这不重要。

当我在 IDEA 中启动代码分析器时,超过 60 秒后它给了我超过 50 条消息。在这里我一无所获。

Source code repo is available on gitlab 这可能会有所帮助。

为了感兴趣,我写了 a short blog post 关于它,它比这个答案更新。

好的,我解决了这个问题。如果你有同样的问题,你必须在你的机器上安装 mysql/postgress 服务器,为 SonarQube 创建数据库和用户,并且 app/build.gradle 中的配置必须如下所示(我使用 MariaDB 服务器):

sonarqube {
    properties {
        property "sonar.projectName", "SudokuSolver"
        property "sonar.projectKey", "SudokuSolver"
        property "sonar.host.url", "http://localhost:9000"
        property "sonar.jdbc.url", "jdbc:mysql://localhost:3306/sonar"
        property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
        property "sonar.jdbc.username", "SONAR_LOGIN"
        property "sonar.jdbc.password", "SONAR_PASSWORD"
        property "sonar.projectVersion", "1.0"
        property "sonar.language", "java"
        property "sonar.sources", "src/main/"
        property "sonar.tests", "src/androidTest/"
        property "sonar.scm.provider", "git"
    }
}

添加数据库配置后,我的项目得到了正确的分析: