Skip to content

Commit

Permalink
Added some null returns from JDK io/nio/regex API to
Browse files Browse the repository at this point in the history
DefaultNullnessAnnotations
  • Loading branch information
iloveeclipse committed Nov 16, 2014
1 parent 423818a commit 164ac68
Show file tree
Hide file tree
Showing 2 changed files with 104 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,32 @@ public static void addDefaultNullnessAnnotations(INullnessAnnotationDatabase dat
database.addFieldAnnotation("java.math.BigInteger", "TEN", "Ljava/math/BigInteger;", true, NullnessAnnotation.NONNULL);


database.addMethodAnnotation("java.util.regex.Matcher", "group", "(Ljava/lang/String;)Ljava/lang/String;", false,
NullnessAnnotation.CHECK_FOR_NULL);
database.addMethodAnnotation("java.util.regex.Matcher", "group", "(I)Ljava/lang/String;", false,
NullnessAnnotation.CHECK_FOR_NULL);

database.addMethodAnnotation("java.nio.file.Files", "probeContentType", "(Ljava/nio/file/Path;)Ljava/lang/String;", true,
NullnessAnnotation.CHECK_FOR_NULL);

database.addMethodAnnotation("java.nio.file.Path", "getRoot", "()Ljava/nio/file/Path;", false,
NullnessAnnotation.CHECK_FOR_NULL);
database.addMethodAnnotation("java.nio.file.Path", "getFileName", "()Ljava/nio/file/Path;", false,
NullnessAnnotation.CHECK_FOR_NULL);
database.addMethodAnnotation("java.nio.file.Path", "getParent", "()Ljava/nio/file/Path;", false,
NullnessAnnotation.CHECK_FOR_NULL);


database.addMethodAnnotation("java.io.File", "list", "()[Ljava/lang/String;", false,
NullnessAnnotation.CHECK_FOR_NULL);
database.addMethodAnnotation("java.io.File", "list", "(Ljava/io/FilenameFilter;)[Ljava/lang/String;", false,
NullnessAnnotation.CHECK_FOR_NULL);
database.addMethodAnnotation("java.io.File", "listFiles", "()[Ljava/io/File;", false,
NullnessAnnotation.CHECK_FOR_NULL);
database.addMethodAnnotation("java.io.File", "listFiles", "(Ljava/io/FilenameFilter;)[Ljava/io/File;", false,
NullnessAnnotation.CHECK_FOR_NULL);
database.addMethodAnnotation("java.io.File", "listFiles", "(Ljava/io/FileFilter;)[Ljava/io/File;", false,
NullnessAnnotation.CHECK_FOR_NULL);

database.addMethodAnnotation("java.lang.ref.ReferenceQueue", "poll", "()Ljava/lang/ref/Reference;", false,
NullnessAnnotation.CHECK_FOR_NULL);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package nullnessAnnotations.returnValue;

import java.io.File;
import java.io.FileFilter;
import java.io.FilenameFilter;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.regex.Pattern;

import edu.umd.cs.findbugs.annotations.ExpectWarning;

public class TestNullReturnsInJdk {

private static final Path PATH = Paths.get("");
private static final File FILE = PATH.toFile();
private static final Pattern PATTERN = Pattern.compile("");

@ExpectWarning("NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE")
void npe1(){
use(PATTERN.matcher("").group(2).length());
}

@ExpectWarning("NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE")
void npe2(){
use(PATTERN.matcher("").group("bla").length());
}

@ExpectWarning("NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE")
void npe3() throws IOException{
use(Files.probeContentType(PATH).length());
}

@ExpectWarning("NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE")
void npe4() throws IOException{
use(PATH.getFileName().getNameCount());
}

@ExpectWarning("NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE")
void npe5() throws IOException{
use(PATH.getParent().getNameCount());
}

@ExpectWarning("NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE")
void npe6() throws IOException{
use(PATH.getRoot().getNameCount());
}

@ExpectWarning("NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE")
void npe7() throws IOException{
use(FILE.list().length);
}

@ExpectWarning("NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE")
void npe8() throws IOException{
use(FILE.list(null).length);
}

@ExpectWarning("NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE")
void npe9() throws IOException{
use(FILE.listFiles().length);
}

@ExpectWarning("NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE")
void npe10() throws IOException{
use(FILE.listFiles((FileFilter)null).length);
}

@ExpectWarning("NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE")
void npe11() throws IOException{
use(FILE.listFiles((FilenameFilter)null).length);
}

private void use(Object o) {
System.out.println(o);
}
}

0 comments on commit 164ac68

Please sign in to comment.