1 23 package org.hammurapi.inspectors; 24 25 import java.util.List ; 26 27 import org.hammurapi.InspectorBase; 28 29 import com.pavelvlasov.config.ConfigurationException; 30 import com.pavelvlasov.config.Parameterizable; 31 import com.pavelvlasov.jsel.LanguageElement; 32 import com.pavelvlasov.jsel.TypeDefinition; 33 import com.pavelvlasov.jsel.VariableDefinition; 34 35 42 public class NoPublicFieldsRule extends InspectorBase implements 43 Parameterizable { 44 48 private boolean staticFinalAllowed = true; 49 50 54 private boolean finalAllowed = false; 55 56 62 public void visit(VariableDefinition variableDefinition) { 63 LanguageElement parent = variableDefinition.getParent(); 64 if (!(parent instanceof TypeDefinition)) { 65 return; } 67 if (((TypeDefinition) parent).getModifiers().contains("private")) { 68 return; } 70 List modifiers = variableDefinition.getModifiers(); 71 if (modifiers.contains("public")) { 72 if (modifiers.contains("final")) { 73 if (finalAllowed) { 74 return; 75 } else if (modifiers.contains("static") && staticFinalAllowed) { 76 return; 77 } else { 78 context.reportViolation(variableDefinition); 79 } 80 } else { 81 context.reportViolation(variableDefinition); 82 } 83 } 84 } 85 86 99 public boolean setParameter(String name, Object value) 100 throws ConfigurationException { 101 if ("static-final-allowed".equals(name)) { 102 staticFinalAllowed = "yes".equals(value); 103 } else if ("final-allowed".equals(name)) { 104 finalAllowed = "yes".equals(value); 105 } else { 106 throw new ConfigurationException("Parameter " + name 107 + " is not supported."); 108 } 109 return true; 110 } 111 112 115 public String getConfigInfo() { 116 StringBuffer ret = new StringBuffer ("Allowed for public fields:\n"); 117 ret.append("static: " + staticFinalAllowed + "\t"); 118 ret.append("final: " + finalAllowed + "\t"); 119 return ret.toString(); 120 } 121 } 122 | Popular Tags |