checker-framework
checker-framework copied to clipboard
Pluggable type-checking for Java
**Summary** An execution of WPI on a Java project with the Optional Checker will yield a set of `.ajava` files where the implicit `@MaybePresent` annotation is inserted for most (if...
Test case: ```java import org.checkerframework.checker.nullness.qual.Nullable; class Test { interface A { String fn(T1 o); } static String foo(Object o) { return o.toString(); } static void testPositive() { A p =...
When printing the "found" and "required" messages, show only, and all, the qualifiers from the relevant type hierarchy. In particular: If the problem is due to nullness, don't print `@Initialized`...
Test written by @kelloggm: ```java import java.net.*; public class BindFail { public void test() throws Exception { // :: error: required.method.not.called Socket s = new Socket(); SocketAddress addr = new...
For this code: https://github.com/typetools/checker-framework/blob/42970d9ee4727351dce0d7bf64174c2732d98592/checker/src/main/java/org/checkerframework/checker/resourceleak/MustCallConsistencyAnalyzer.java#L1321-L1326 I think we can avoid calling `getPath()` here by passing down the CFG to this method. It should be possible to get the tree for the...
I am working on a program that passes around "bundles" of resources. When a client is done with a bundle, all of the underlying resources have to be closed. Today...
Consider the following code, which is checked in as `InitializationAfterSuperTest.java`: ```java import java.io.IOException; import java.net.Socket; import org.checkerframework.checker.calledmethods.qual.EnsuresCalledMethods; import org.checkerframework.checker.mustcall.qual.InheritableMustCall; import org.checkerframework.checker.mustcall.qual.Owning; @InheritableMustCall("close") public class InitializationAfterSuperTest implements AutoCloseable { @Owning Socket...
This code passes the Must Call Checker: ```java @MustCall({"toString"}) String foo(@MustCall({"hashCode"}) String arg) { return arg; } ``` However, it seems wrong to permit one `@MustCall` type to be permitted...
Sometimes, programmers use `static @Owning` fields, especially in legacy code. It would be nice to have a flag to suppress all warnings related to `static @Owning` fields, or to respect...