From fc406a1d0d541e352cec4a3699f4d8cfafe9424b Mon Sep 17 00:00:00 2001 From: Manu Sridharan Date: Tue, 4 Dec 2018 14:02:05 -0800 Subject: [PATCH] Add models for Apache StringUtils isEmpty methods (#264) --- gradle/dependencies.gradle | 2 ++ nullaway/build.gradle | 2 ++ .../nullaway/handlers/LibraryModelsHandler.java | 5 +++++ .../nullaway/testdata/NullAwayNativeModels.java | 13 +++++++++++++ 4 files changed, 22 insertions(+) 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 063259d0f6..1a5f414e9a 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 773e4b84e5..14aa8781a6 100644 --- a/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNativeModels.java +++ b/nullaway/src/test/resources/com/uber/nullaway/testdata/NullAwayNativeModels.java @@ -310,4 +310,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(); + } + } }