1 5 package org.hammurapi.inspectors; 6 7 import org.hammurapi.InspectorBase; 8 9 import com.pavelvlasov.jsel.Code; 10 import com.pavelvlasov.jsel.JselException; 11 import com.pavelvlasov.jsel.LanguageElement; 12 import com.pavelvlasov.jsel.Operation; 13 import com.pavelvlasov.jsel.OperationInfo; 14 import com.pavelvlasov.jsel.TypeBody; 15 import com.pavelvlasov.jsel.expressions.MethodCall; 16 import com.pavelvlasov.jsel.statements.DoStatement; 17 import com.pavelvlasov.jsel.statements.ForStatement; 18 import com.pavelvlasov.jsel.statements.WhileStatement; 19 import com.pavelvlasov.review.SourceMarker; 20 21 25 public class SqlCreateStatementWithinLoop extends InspectorBase { 26 27 public boolean visit(MethodCall target) throws JselException { 28 if (context.getVisitorStack().isIn(new Class [] { ForStatement.class, DoStatement.class, WhileStatement.class })) { 29 context.verbose((SourceMarker) target, " target " + target.toString()); 30 if ("createStatement".equals(target.getMethodName()) || "prepareStatement".equals(target.getMethodName())) { 31 Code code = ((LanguageElement) target).getEnclosingCode(); 32 if (code != null) { 33 Operation op = (Operation) code; 34 TypeBody tb = code.getEnclosingType(); 35 36 String key = tb.getFcn() + ">>" + op.getOperationSignature(); 37 38 OperationInfo opi = target.getProvider(); 39 context.verbose((SourceMarker) target, "opi " + opi.getDeclaringType().getName()); 40 41 if ("java.sql.Connection".equals(opi.getDeclaringType().getName())) { 42 context.reportViolation((SourceMarker) target); 43 } 44 } 45 } 46 } 47 return true; 48 } 49 } 50 | Popular Tags |