Findbugsをコマンドラインから使用する

Android

まえがき

前回のAndroid Studioに静的分析ツールFindBugsを追加して品質を高める | Developers.IOでは、Android StudioからFindBugsを実行しました。

今回はCIなどでも確認できるように、コマンドラインから実行できるようにします。

設定

app/build.gradle

apply plugin: 'com.android.application'
+ apply plugin: 'findbugs'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "com.kamedon.sampleapp"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:25.1.0'
    testCompile 'junit:junit:4.12'
}

+ task findbugs(type: FindBugs) {
+     ignoreFailures = true
+     classes = fileTree('build/intermediates/classes/debug/')
+     source = fileTree('src/main/java/')
+     classpath = files()
+     effort = 'max'
+     reportLevel = "low"  // *どのレベルの報告まで対応するかで変更*
+     excludeFilter = new File("${project.rootDir}/findbugs-filter.xml")
+ }

// html出力の方が見やすいため
+ tasks.withType(FindBugs) {
+     reports {
+         xml.enabled = false
+         html.enabled = true
+     }
+ }

コマンド

あくまでも、ビルド後に解析ができるようになるので ./gradlew assembleDebug findbugs

ビルド済みの場合はfindbugsだけで大丈夫です。

./gradlew findbugs

ここに作られます。 app/build/reports/findbugs/findbugs.html

参考