package ic_java.false_positives; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.io.PrintWriter; //import org.apache.log4j.helpers.Loader; public abstract class FalsePositives05 { private final Object welcomeFilesLock = new Object(); private String welcomeFiles[] = new String[0]; abstract Object foo(); abstract InputStream bar(); public String[] ex01() { synchronized (welcomeFilesLock) { return (welcomeFiles); } } // private ReadWriteLock loaderLock; // private Loader loader; public Object ex02() { // Lock readLock = loaderLock.readLock(); // readLock.lock(); foo(); try { return lock; } finally { bar(); } } private Object lock; private Object[] array = new Object[0]; public Object[] ex03() { synchronized (lock) { return array; } } public String ex04() { InputStream stream = null; try (BufferedReader br = new BufferedReader(new InputStreamReader(stream))) { String strRead = ""; while (strRead != null) { strRead = br.readLine(); } } catch (IOException e) { return null; } return null; } abstract int integer() throws Exception; public void ex05() { boolean success = false; try { if (integer() < 10) { foo(); } success = true; } catch (Exception e) { foo(); } finally { // detect other types of Throwable and cancel this Timer if (!success) { foo(); } } } public void ex06(String name) throws Exception { File config = new File(name); try (FileOutputStream fos = new FileOutputStream(config); PrintWriter writer = new PrintWriter(new OutputStreamWriter( fos , "rw"))) { bar(); } } }