我在android studio中使用errorprone和nullaway时遇到了麻烦。 看起来像nullaway取决于errorprone。这些是静态分析工具,以避免NPE。关于如何在nullaway github页面上使用nullaway的文档是非常差的,并不清楚。
我已经尝试过在android studio中插入插件区域并安装了errorprone插件,然后将java编译器切换为javac,容易出错,如下图所示:
然后我把以下代码放在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
}
答案 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"
选项。