facebook twitter hatena line email

セキュリティ/静的解析/Sonar/android

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

sonar解析画面インストール

https://docs.sonarqube.org/latest/setup/get-started-2-minutes/

  1. zip file(https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.1.0.31237.zip )をDL
  2. userとpassは"admin"がデフォで設定されてる。

macの場合

設定

$ mv ~/Downloads/sonarqube-8.1.0.31237 /d/src/

起動

$ /d/src/sonarqube-8.1.0.31237/bin/macosx-universal-64/sonar.sh console

"java.lang.IllegalStateException: SonarQube requires Java 11 to run"エラー

java11以外になってるようであればjava11へ(java13でも動いた)

java -version
openjdk version "11.0.2" 2019-01-15

debian系の場合

設定

$ cd ~
$ wget https://binaries.sonarsource.com/Distribution/sonarqube/sonarqube-8.1.0.31237.zip 
$ mv sonarqube-8.1.0.31237.zip  src/
$ unzip sonarqube-8.1.0.31237.zip 

起動

$ ~/src/sonarqube-8.1.0.31237/bin/linux-x86-64/sonar.sh console

"WARN app[][o.s.a.p.AbstractManagedProcess] Process exited with exit value [es]: 143"の警告が出る場合

以下を見てみる

$ tail logs/web.log

"java.lang.RuntimeException: org.apache.catalina.LifecycleException: Failed to initialize component [StandardServer[-1]]"エラーが起こる場合

$ vi conf/sonar.properties
- sonar.web.port=9000
+ sonar.web.port=9010

ポート9000を使っている可能性があるので、ポートを適当な番号に変更する。

androidプロジェクト側にsonarを設定

参考:https://android.jlelse.eu/have-code-quality-analysis-in-your-android-project-2a549e04d1a8

プロジェクト直下のbuild.gradle

buildscript {
    repositories {
        google()
        jcenter()
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.0'
        classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.8"
    }
}

app/build.gradle

apply plugin: 'org.sonarqube'
sonarqube {
    properties {
        property "sonar.projectName", "MyProject"
        property "sonar.projectKey", "com.example.myproject"
        property "sonar.host.url", "http://localhost:9000"
        property "sonar.language", "java"
        property "sonar.sources", "src/main/"
        property "sonar.login", "admin"
        property "sonar.password", "admin"
    }
}

androidプロジェクト解析実行

androidプロジェクト直下へ移動

./gradlew sonarqube -Dsonar.host.url=http://localhost:9000/

ビルドが成功したら以下へアクセス

http://localhost:9000/

"app/src/androidTest/java/com/example/sonarapplication/ExampleInstrumentedTest.java:6: エラー: パッケージandroidx.test.ext.junit.runnersは存在しません"エラーとなる場合

以下をコメントアウトすれば良い。

app/src/androidTest/java/com/example/sonarapplication/ExampleInstrumentedTest.java

// import androidx.test.ext.junit.runners.AndroidJUnit4;
// @RunWith(AndroidJUnit4.class)

"does not exist"エラーが出る時

> The folder 'src/main/' does not exist for 'jp.co.hoge.hoge1' (base directory = /d/www/android/hoge/hoge1)"

以下ソースのpathが適切か確認する。mainなどがなければ削る。

build.gradle

- property "sonar.sources", "src/main/"
+ property "sonar.sources", "src/"