1 23 package org.hammurapi.inspectors; 24 25 26 import java.util.ArrayList ; 27 import java.util.Iterator ; 28 29 import org.apache.oro.text.GlobCompiler; 30 import org.apache.oro.text.regex.MalformedPatternException; 31 import org.apache.oro.text.regex.Pattern; 32 import org.apache.oro.text.regex.Perl5Matcher; 33 import org.hammurapi.InspectorBase; 34 35 import com.pavelvlasov.config.ConfigurationException; 36 import com.pavelvlasov.config.Parameterizable; 37 import com.pavelvlasov.jsel.impl.JavaTokenTypes; 38 import com.pavelvlasov.jsel.impl.Token; 39 import com.pavelvlasov.review.SourceMarker; 40 41 42 48 public class VendorNameViolation extends InspectorBase implements Parameterizable { 49 private Perl5Matcher matcher=new Perl5Matcher(); 50 51 55 private ArrayList vendorNames=new ArrayList (); 56 private ArrayList patterns=new ArrayList (); 57 58 59 public void visit(Token token) { 60 if (token.getType()==JavaTokenTypes.SL_COMMENT || token.getType()==JavaTokenTypes.ML_COMMENT) { 61 context.info(token, token.getText() ) ; checkForViolations(token, token.getText() ); 63 } 64 } 65 66 public void checkForViolations( SourceMarker scrMrk, String text){ 67 Iterator it=patterns.iterator(); 68 69 while (it.hasNext()) { 70 Pattern pt = (Pattern) it.next(); 71 if (matcher.contains(text, pt )) { 72 context.reportViolation(scrMrk, "Found Pattern " + pt.getPattern().toString() ); 73 } 74 } 75 } 76 77 78 85 public boolean setParameter(String name, Object parameter) 86 throws ConfigurationException { 87 if ("vendor-name".equals(name)) { 88 90 if (!vendorNames.contains(parameter.toString())) { 91 vendorNames.add(parameter.toString()); 92 93 GlobCompiler compiler = new GlobCompiler(); 94 try { 95 patterns.add(compiler.compile(parameter.toString(), 96 GlobCompiler.CASE_INSENSITIVE_MASK)); 97 } catch (MalformedPatternException e) { 98 throw new ConfigurationException("Malformed pattern: " 99 + parameter, e); 100 } 101 } 102 return true; 103 } 104 105 throw new ConfigurationException("Parameter '" + name 106 + "' is not supported by " + getClass().getName()); 107 } 108 109 112 public String getConfigInfo() { 113 StringBuffer ret=new StringBuffer ("Configured Vendor Names text:\n"); 114 Iterator it=vendorNames.iterator(); 115 116 117 while (it.hasNext()) { 118 ret.append(" " + it.next() + "\n"); 119 } 120 return ret.toString(); 121 } 122 } 123 124 | Popular Tags |