如何在android studio中安装Uber的nullaway静态分析工具?

时间:2017-10-23 06:03:20

标签: android errorprone

我在android studio中使用errorpronenullaway时遇到了麻烦。 看起来像nullaway取决于errorprone。这些是静态分析工具,以避免NPE。关于如何在nullaway github页面上使用nullaway的文档是非常差的,并不清楚。

我已经尝试过在android studio中插入插件区域并安装了errorprone插件,然后将java编译器切换为javac,容易出错,如下图所示:

enter image description here

然后我把以下代码放在android studio中,认为编译器会捕获潜在的null:

private void processLog() {     
     log(null);
}

static void log(Object x) {
    System.out.println(x.toString());
}
static void foo() {
    log(null);
}
没有发生任何事情。这是我放在gradle文件中的内容;

底层 build.gradle:

dependencies {
    annotationProcessor "com.uber.nullaway:nullaway:0.1.6"
}

顶级 build.gradle文件:

buildscript {
    repositories {
        jcenter()
        maven { url 'https://maven.fabric.io/public' }
        mavenCentral()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.3'
        classpath 'com.google.gms:google-services:3.1.1'
        classpath 'io.fabric.tools:gradle:1.24.+'

        classpath "net.ltgt.gradle:gradle-errorprone-plugin:0.0.11"
        classpath "net.ltgt.gradle:gradle-apt-plugin:0.11"

    }
}

plugins {
    id "net.ltgt.errorprone" version "0.0.13"
}

allprojects {
    repositories {
        jcenter()
        mavenCentral()

        maven { url "https://maven.google.com"   }

        maven { url "http://dl.bintray.com/pt-midtrans/maven" }

        maven { url "https://jitpack.io" }

        maven { url "https://plugins.gradle.org/m2/" }
    }

}

subprojects {
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support'
                    && !details.requested.name.contains('multidex')) {
                details.useVersion "$supportlib_version"
            }
        }
    }
}


task clean(type: Delete) {
    delete rootProject.buildDir
}

2 个答案:

答案 0 :(得分:0)

无需从android studio安装error-prone插件。

如文档中所述,请执行以下两个步骤:

1)在顶级构建文件中添加存储库URL和类路径:

repositories {
    // other repositories
    maven { url "https://plugins.gradle.org/m2/" }
 }
dependencies {
    classpath "net.ltgt.gradle:gradle-errorprone-plugin:0.0.13"
}

2)为null-away添加注释处理器并在模块级gradle文件中应用容易出错的插件(第二部分是你缺少的。你没有将插件应用到你的模块):

````

apply plugin: 'net.ltgt.errorprone'

dependencies {
    annotationProcessor "com.uber.nullaway:nullaway:0.1.6"
} 

```

答案 1 :(得分:0)

我根据我们的here为NullAway Android sample app的Android应用程序添加了一个自包含的Gradle构建文件。您必须调整"-XepOpt:NullAway:AnnotatedPackages=com.uber"选项以根据需要引用您自己的软件包和Android SDK /目标版本。此外,如果您只是希望NullAway发出警告但不阻止构建,请省略"-Xep:NullAway:ERROR"选项。