1 23 package org.hammurapi.inspectors; 24 25 import org.hammurapi.InspectorBase; 26 27 import com.pavelvlasov.config.ConfigurationException; 28 import com.pavelvlasov.config.Parameterizable; 29 import com.pavelvlasov.jsel.JselException; 30 import com.pavelvlasov.jsel.LanguageElement; 31 import com.pavelvlasov.jsel.expressions.Dot; 32 import com.pavelvlasov.review.SourceMarker; 33 34 39 public class DotChainInspector extends InspectorBase implements Parameterizable { 40 41 private Integer maxChain; 42 43 public void visit(Dot dot) { 44 if (maxChain==null) { 45 disable("Max chain parameter is not set"); 46 return; 47 } 48 49 LanguageElement curDot=(LanguageElement) dot; 50 51 for (int i=0; i<maxChain.intValue(); i++) { 52 if (curDot.getParent()!=null && curDot.getParent().getParent() instanceof Dot) { 53 curDot=curDot.getParent().getParent(); 54 } else { 55 return; 56 } 57 } 58 59 context.reportViolation((SourceMarker) dot); 60 } 61 62 public boolean setParameter(String name, Object parameter) throws ConfigurationException { 63 if ("max-chain".equals(name)) { 64 maxChain=(Integer ) parameter; 65 return true; 66 } 67 68 return false; 69 } 70 71 } 72 | Popular Tags |