1 23 package org.hammurapi.inspectors; 24 25 import org.hammurapi.InspectorBase; 26 27 import com.pavelvlasov.jsel.LanguageElement; 28 import com.pavelvlasov.jsel.expressions.Dot; 29 import com.pavelvlasov.jsel.expressions.Equal; 30 import com.pavelvlasov.jsel.expressions.Expression; 31 import com.pavelvlasov.jsel.expressions.IntegerConstant; 32 import com.pavelvlasov.jsel.expressions.MethodCall; 33 import com.pavelvlasov.jsel.expressions.PrimaryExpression; 34 35 40 public class UseEqualsInsteadOfCompareToInspector extends InspectorBase { 41 42 public void visit(MethodCall methodCall) { 43 PrimaryExpression name = methodCall.getName(); 44 if (name instanceof Dot) { 45 name=(PrimaryExpression) name.getOperand(1); 46 } 47 48 if ("compareTo".equals(name.toString()) && methodCall.getParameters().size()==1) { 49 LanguageElement parent = ((LanguageElement) methodCall).getParent(); 50 if (parent instanceof Equal) { 51 Object theOtherOperand=((Expression) parent).getOperand(0); 52 if (theOtherOperand==methodCall) { 53 theOtherOperand=((Expression) parent).getOperand(1); 54 } 55 56 if (theOtherOperand instanceof IntegerConstant 57 && ((IntegerConstant) theOtherOperand).getValue()==0) { 58 context.reportViolation(parent); 59 } 60 } 61 } 62 } 63 } 64 | Popular Tags |