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.Expression; 29 import com.pavelvlasov.jsel.expressions.Parenthesis; 30 import com.pavelvlasov.review.SourceMarker; 31 32 36 public class RedundantParenthesisRule extends InspectorBase { 37 38 public void visit(Parenthesis parenthesis) { 39 if (parenthesis.getOperands().isEmpty()) { 40 return; 41 } 42 43 Class parent=((LanguageElement) parenthesis).getParent().getClass(); 44 if (parent.getInterfaces().length==0) { 45 return; 46 } 47 parent=parent.getInterfaces()[0]; 48 if (parent.getInterfaces().length==0) { 49 return; 50 } 51 parent=parent.getInterfaces()[0]; 52 53 Expression firstOperand = parenthesis.getOperand(0); 54 Class operand=firstOperand.getClass(); 55 if (operand.getInterfaces().length==0) { 56 return; 57 } 58 operand=operand.getInterfaces()[0]; 59 if (operand.getInterfaces().length==0) { 60 return; 61 } 62 operand=operand.getInterfaces()[0]; 63 64 if (parent.isAssignableFrom(operand)) { 65 context.reportViolation((SourceMarker) parenthesis); 66 } 67 } 68 } 69 | Popular Tags |