1 23 package org.hammurapi.inspectors; 24 25 import org.hammurapi.InspectorBase; 26 27 import com.pavelvlasov.jsel.JselException; 28 import com.pavelvlasov.jsel.LanguageElement; 29 import com.pavelvlasov.jsel.TypeSpecification; 30 import com.pavelvlasov.jsel.VariableDefinition; 31 import com.pavelvlasov.jsel.expressions.Ident; 32 import com.pavelvlasov.jsel.expressions.StringConstant; 33 import com.pavelvlasov.jsel.statements.CasesGroup; 34 35 36 42 public class TextLabelsInSwitchStatementRule extends InspectorBase { 43 44 47 private static final String STRING_TYPE = "java.lang.String"; 48 49 54 public void visit(CasesGroup element) { 55 java.util.Iterator iter = element.getCases().iterator(); 56 while (iter.hasNext()) { 57 LanguageElement le = (LanguageElement) iter.next(); 58 if (le instanceof StringConstant) { 59 context.reportViolation(le); 60 } 61 else if (le instanceof Ident) { 62 try { 63 Object r = 64 le.getEnclosingScope().getVariableNamespace(). 65 find(((Ident) le).getText()).getTypeName(); 66 if (r instanceof VariableDefinition) { 67 VariableDefinition vd=(VariableDefinition) r; 68 TypeSpecification typeSpecification = vd.getTypeSpecification(); 69 70 if (STRING_TYPE.equals(typeSpecification.getName())) { 71 context.reportViolation(le); 72 } 73 } 74 } catch (JselException e) { 75 context.warn(element, e); 76 } 77 } 78 } 79 } 80 } 81 | Popular Tags |