Files
2018-08-30 10:48:05 +01:00

243 lines
8.5 KiB
Java

public class Operations implements AutoCloseable {
interface NoBodies {
NoBodies append(String s);
}
interface NoBodiesSubtype extends NoBodies {
NoBodies append(String s);
}
public Operations open() { return this; }
public Operations create() { return this; }
public boolean isOpen() { return true; }
public void close() { return; }
public boolean add(String s) { return true; }
public boolean addAll(String...strings) { return true; }
public Operations chain() { return this; }
public void missingClose() {
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.close(); }
{ Operations ops = open(); if (ops.isOpen()) ops.open(); }
}
public void missingAdd() {
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.add("something"); }
{ Operations ops = create(); if (ops.isOpen()) ops.addAll("the", "things"); }
}
public void missingUse() {
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
System.out.println(this.toString());
this.toString();
}
public void designedForChaining() {
StringBuilder b = new StringBuilder();
{ Object use = b.append("a").append("b"); }
{ Object use = b.append("a").append("b"); }
{ Object use = b.append("a").append("b"); }
{ Object use = b.append("a").append("b"); }
{ Object use = b.append("a").append("b"); }
{ Object use = b.append("a").append("b"); }
{ Object use = b.append("a").append("b"); }
{ Object use = b.append("a").append("b"); }
{ Object use = b.append("a").append("b"); }
{ Object use = b.append("a").append("b"); }
{ Object unchainedUse = b.append("c"); }
{ Object unchainedUse = b.append("c"); }
{ Object unchainedUse = b.append("c"); }
{ Object unchainedUse = b.append("c"); }
{ Object unchainedUse = b.append("c"); }
{ Object unchainedUse = b.append("c"); }
{ Object unchainedUse = b.append("c"); }
{ Object unchainedUse = b.append("c"); }
{ Object unchainedUse = b.append("c"); }
{ Object unchainedUse = b.append("c"); }
b.append("d");
}
public void noBodies() {
NoBodiesSubtype t = null;
{ Object use = t.append("a").append("b"); }
{ Object use = t.append("a").append("b"); }
{ Object use = t.append("a").append("b"); }
{ Object use = t.append("a").append("b"); }
{ Object use = t.append("a").append("b"); }
{ Object use = t.append("a").append("b"); }
{ Object use = t.append("a").append("b"); }
{ Object use = t.append("a").append("b"); }
{ Object use = t.append("a").append("b"); }
{ Object use = t.append("a").append("b"); }
{ Object unchainedUse = t.append("c"); }
{ Object unchainedUse = t.append("c"); }
{ Object unchainedUse = t.append("c"); }
{ Object unchainedUse = t.append("c"); }
{ Object unchainedUse = t.append("c"); }
{ Object unchainedUse = t.append("c"); }
{ Object unchainedUse = t.append("c"); }
{ Object unchainedUse = t.append("c"); }
{ Object unchainedUse = t.append("c"); }
{ Object unchainedUse = t.append("c"); }
t.append("d");
}
public void notMissingAfterAll(Operations ops) {
ops = open(); ops.close();
}
private static class Builder {
private int val;
public Builder withVal(int val) {
this.val = val;
return this;
}
public String build() {
return Integer.toString(val);
}
}
public void missingBuild() {
Builder builder = new Builder();
String result;
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.build();
result = builder.withVal(1).build();
}
public void testConn(java.sql.Connection conn) throws java.sql.SQLException {
java.sql.PreparedStatement pstmt = null;
java.sql.ResultSet rs = null;
try {
pstmt = conn.prepareStatement("SELECT something FROM table");
rs = pstmt.executeQuery();
while(rs.next()) { // OK
}
pstmt.executeQuery().next();
pstmt.executeQuery().next();
pstmt.executeQuery().next();
pstmt.executeQuery().next();
pstmt.executeQuery().next();
pstmt.executeQuery().next();
pstmt.executeQuery().next();
pstmt.executeQuery().next();
pstmt.executeQuery().next();
pstmt.executeQuery().next();
pstmt.executeQuery().next();
pstmt.executeQuery().next();
pstmt.executeQuery().next();
pstmt.executeQuery().next();
pstmt.executeQuery().next();
} finally {
}
}
{
String test = "test";
test = searchReplace(test);
test = searchReplace(test);
test = searchReplace(test);
test = searchReplace(test);
test = searchReplace(test);
test = searchReplace(test);
test = searchReplace(test);
test = searchReplace(test);
test = searchReplace(test);
test = searchReplace(test);
test = searchReplace(test);
test = searchReplace(test);
test = searchReplace(test);
test = searchReplace(test);
test = searchReplace(test);
test = searchReplace(test);
String test2 = "test2";
test2 = searchReplace(test2); // OK (do not report methods called on their own result)
}
private String searchReplace(String s) {
return s;
}
public void autoClose() {
try(Operations ops = open()) {
if (ops.isOpen()) ops.open();
}
}
}