(4) Android 網羅的単体テスト編 SonarCloud (コード品質分析)


(1) Android 網羅的単体テスト編(Android開発者テスト) ->
https://qiita.com/hal319/items/a8b1d52ac0cfb36f4cee
(2) 網羅率測定 (Android開発者テスト)-> https://qiita.com/hal319/items/5bf3f7c8c3c577ac616f
(3) github・CircleCI統合 クラウド編(Android開発者テスト) https://qiita.com/halsuguro/items/51eca80ce44bdc18d927
(4) SonarCloud (Android開発者テスト)

網羅率をCircle CI上で測定できるようになったら、コードの品質をクラウドで見ましょう。

SonarCloudというツールがあります、その使い方。

まずgithubから解析したりリポジトリーを選択。
ビルドツールを選択、当然前回からセットアップしたCircleCIを選択。

つぎにいくつかのちょいメンドウなおまじないを、設定。
 

Click here to create a CircleCI context named SonarCloud.で"here"を押す。

こんな画面が出てくるので、迷わず"Create Context"を押す。

Context nameに"SonarCloud"を入力


Add Environment Variableを押して、

先にあった、Valueの値をコピペ

次のstepで、configy.ymlの入れるべきコードが出てくる。

まあこれ通り入れればうまく動くはず。ちなみにbuild.gradleは

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


sonarqube {
    properties {
        property "sonar.projectKey", "halsuguro_simple_unit2_mvc"
        property "sonar.organization", "halsuguro"
        property "sonar.host.url", "https://sonarcloud.io"
    }
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 28

    defaultConfig {
        applicationId "com.example.empty"
        minSdkVersion 28
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
        testInstrumentationRunnerArguments clearPackageData: 'true'
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
        debug {
            testCoverageEnabled true
        }
    }

    testOptions {
        animationsDisabled true

        unitTests {
            returnDefaultValues true
            includeAndroidResources true
        }
    }
}



dependencies {
    implementation fileTree(dir: "libs", include: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.1.0'
    implementation 'androidx.constraintlayout:constraintlayout:1.1.3'

    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'junit:junit:4.12'

    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-intents:3.2.0'
    androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3'
    androidTestImplementation 'androidx.test.ext:junit:1.1.1'
}

apply from: 'jacoco.gradle'

config.ymlはこんな感じで、build時間がかかるので、jacoco等々の記述は外してある。


version: 2.1
jobs:
  build:
    working_directory: ~/code
    docker:
      - image: 'circleci/android:api-28'
      - image: 'circleci/openjdk:11-jdk'

    steps:
      - checkout
      - run:
          name: Analyze on SonarCloud
          command: ./gradlew build sonarqube


workflows:
  main:
    jobs:
      - build:
          context: SonarCloud

そうすると、いろいろなコードの指標を出してくれる、それもビルドごとに。Cyclomaticの複雑度なんかも、見たいときにすぐ見れる。ステキ!