import org.checkerframework.checker.tainting.qual.Untainted; import java.util.Arrays; import java.util.List; class ForEachLoop { private static final List CAN_BE_DIRTY = Arrays.asList("select s from Sample s", "select s from Sample s where s.color = 'red'"); private static final List CLEAN = List.of("select s from Sample s", "select s from Sample s where s.color = 'red'"); public void testLoopClean() { List queries = Arrays.asList("select s from Sample s", "select s from Sample s where s.color = 'red'"); for (String query : queries) { sink(query); } } public void testLoopDirty(String dirty) { List queries = Arrays.asList("select s from Sample s", "select s from Sample s where s.color = 'red'", dirty); for (String query : queries) { sink(query); } } public void testLoopCleanField() { for (String query : CLEAN) { sink(query); } } public void testLoopDirtyField() { for (String query : CAN_BE_DIRTY) { sink(query); } } public void sink(@Untainted String clean) { } }