import org.checkerframework.checker.tainting.qual.Untainted; import java.util.ArrayList; import java.util.List; class SinkTest { public void test(String string) { sink(string); //warn } @Untainted public String returnDirty(String dirty) { return dirty; //warn } void sink(@Untainted String clear) { } void assignDirty(@Untainted String clear, String dirty) { clear = dirty; //warn } @Untainted String dirty = getFromStatic(); //warn static List list = new ArrayList<>(); private static String getFromStatic() { return list.get(0); } @Untainted static String clear = ""; static void spoil(String dirty) { clear = dirty; //warn } static void testLocal(String dirty) { @Untainted String clean = dirty; //warn } static void testLocal2(String dirty) { @Untainted String clean = ""; clean = dirty; //warn } }