1 23 package org.hammurapi.inspectors; 24 25 import java.util.Iterator ; 26 27 import org.hammurapi.InspectorBase; 28 import org.hammurapi.HammurapiException; 29 30 import com.pavelvlasov.config.ConfigurationException; 31 import com.pavelvlasov.config.Parameterizable; 32 import com.pavelvlasov.jsel.CompilationUnit; 33 import com.pavelvlasov.jsel.Identifier; 34 import com.pavelvlasov.jsel.JselException; 35 import com.pavelvlasov.jsel.VariableDefinition; 36 import com.pavelvlasov.review.SourceMarker; 37 38 44 public class DoNotUseTypeRule extends InspectorBase implements Parameterizable { 45 46 51 public void visit(VariableDefinition element) { 52 try { 56 if (disAllowedIncludes.contains(element.getTypeSpecification().getType().getName())) { 57 context.reportViolation(element); 58 } 59 } catch (JselException e) { 60 context.warn(element, e); 61 } 62 } 63 64 71 public void visit(CompilationUnit element) throws HammurapiException { 72 Iterator imports = element.getImports().iterator(); 73 while (imports.hasNext()) { 74 Identifier importItem = (Identifier) imports.next(); 75 String importName = importItem.getValue(); 76 if (importName.endsWith(STAR)) { 77 importName = 78 importName.substring(0, importName.length()-SUB_STR_LEN); 79 } 80 if (disAllowedIncludes.contains(importName)) { 81 context.reportViolation((SourceMarker) importItem); 82 } else { 83 int pos = importName.lastIndexOf(DOT); 85 if (pos>0) { 86 importName = importName.substring(0, pos); 87 if (disAllowedIncludes.contains(importName)) { 88 context.reportViolation((SourceMarker) importItem); 89 } 90 } 91 } 92 } 93 } 94 95 99 private java.util.Set disAllowedIncludes = new java.util.HashSet (); 100 101 private static final String STAR = "*"; 102 private static final String DOT = "."; 103 private static final int SUB_STR_LEN = 2; 104 105 106 113 public boolean setParameter(String name, Object parameter) throws ConfigurationException { 114 if ("include".equals(name)) { 115 String s = parameter.toString(); 116 if (s.endsWith(STAR)) { 118 s = s.substring(0, s.length()-SUB_STR_LEN); 119 } 120 disAllowedIncludes.add(s); 121 return true; 122 } else { 123 throw new ConfigurationException("Parameter '"+name+"' is not supported by "+getClass().getName()); 124 } 125 } 126 127 130 public String getConfigInfo() { 131 StringBuffer ret=new StringBuffer ("Disallowed types:"); 132 java.util.Iterator iter = disAllowedIncludes.iterator(); 133 while (iter.hasNext()) { 134 ret.append("\n\ttype: " + (String ) iter.next()); 135 } 136 ret.append("\n"); 137 138 return ret.toString(); 139 } 140 } 141 | Popular Tags |