diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle index d422e58255..a48a882437 100755 --- a/gradle/dependencies.gradle +++ b/gradle/dependencies.gradle @@ -67,6 +67,8 @@ def test = [ // freeze at 2.5.5 since it's not supported afterward cfCompatQual : "org.checkerframework:checker-compat-qual:2.5.5", rxjava2 : "io.reactivex.rxjava2:rxjava:2.1.2", + commonsLang3 : "org.apache.commons:commons-lang3:3.8.1", + commonsLang : "commons-lang:commons-lang:2.6", ] ext.deps = [ diff --git a/nullaway/build.gradle b/nullaway/build.gradle index 408cb82046..e3ab9f4d29 100644 --- a/nullaway/build.gradle +++ b/nullaway/build.gradle @@ -54,6 +54,8 @@ dependencies { testCompile deps.test.inferAnnotations testCompile deps.apt.javaxInject testCompile deps.test.rxjava2 + testCompile deps.test.commonsLang + testCompile deps.test.commonsLang3 } javadoc { diff --git a/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java b/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java index bd0f800e2f..d0af1cb907 100644 --- a/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java +++ b/nullaway/src/main/java/com/uber/nullaway/handlers/LibraryModelsHandler.java @@ -294,6 +294,11 @@ private static class DefaultLibraryModels implements LibraryModels { .put(methodRef(Strings.class, "isNullOrEmpty(java.lang.String)"), 0) .put(methodRef(Objects.class, "isNull(java.lang.Object)"), 0) .put(methodRef("android.text.TextUtils", "isEmpty(java.lang.CharSequence)"), 0) + .put(methodRef("org.apache.commons.lang.StringUtils", "isEmpty(java.lang.String)"), 0) + .put( + methodRef( + "org.apache.commons.lang3.StringUtils", "isEmpty(java.lang.CharSequence)"), + 0) .build(); private static final ImmutableSet NULLABLE_RETURNS = diff --git a/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNativeModels.java b/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNativeModels.java index 8d8d76f1a9..00f16b26ec 100644 --- a/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNativeModels.java +++ b/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNativeModels.java @@ -308,4 +308,17 @@ static void androidStuff() { s.hashCode(); } } + + static void apacheCommonsStuff() { + String s = null; + if (!org.apache.commons.lang.StringUtils.isEmpty(s)) { + // no warning due to isEmpty check + s.hashCode(); + } + String t = null; + if (!org.apache.commons.lang3.StringUtils.isEmpty(t)) { + // no warning due to isEmpty check + t.hashCode(); + } + } }