View Javadoc
1 package net.sourceforge.pmd.rules; 2 3 import net.sourceforge.pmd.AbstractRule; 4 import net.sourceforge.pmd.RuleContext; 5 import net.sourceforge.pmd.ast.ASTFieldDeclaration; 6 import net.sourceforge.pmd.ast.ASTLocalVariableDeclaration; 7 import net.sourceforge.pmd.ast.ASTName; 8 import net.sourceforge.pmd.ast.ASTPrimitiveType; 9 import net.sourceforge.pmd.ast.ASTType; 10 import net.sourceforge.pmd.ast.ASTVariableDeclarator; 11 import net.sourceforge.pmd.ast.ASTVariableDeclaratorId; 12 import net.sourceforge.pmd.ast.AccessNode; 13 import net.sourceforge.pmd.ast.Node; 14 15 public class VariableNamingConventionsRule extends AbstractRule { 16 17 public Object visit(ASTLocalVariableDeclaration node, Object data) { 18 return checkNames(node, data); 19 } 20 21 public Object visit(ASTFieldDeclaration node, Object data) { 22 return checkNames(node, data); 23 } 24 25 public Object checkNames(Node node, Object data) { 26 27 boolean isFinal = false; 28 if (node instanceof AccessNode) { 29 isFinal = ((AccessNode)node).isFinal(); 30 } 31 32 ASTType childNodeType = (ASTType)node.jjtGetChild(0); 33 String varType = ""; 34 if (childNodeType.jjtGetChild(0)instanceof ASTName ) { 35 varType = ((ASTName)childNodeType.jjtGetChild(0)).getImage(); 36 } else if (childNodeType.jjtGetChild(0) instanceof ASTPrimitiveType) { 37 varType = ((ASTPrimitiveType)childNodeType.jjtGetChild(0)).getImage(); 38 } 39 if (varType != null && varType.length() > 0) { 40 //Get the variable name 41 ASTVariableDeclarator childNodeName = (ASTVariableDeclarator)node.jjtGetChild(1); 42 ASTVariableDeclaratorId childNodeId = (ASTVariableDeclaratorId)childNodeName.jjtGetChild(0); 43 String varName = childNodeId.getImage(); 44 45 46 if (isFinal) { 47 if (!varName.equals(varName.toUpperCase())) { 48 String msg = "Variables that are final should be in all caps."; 49 RuleContext ctx = (RuleContext)data; 50 ctx.getReport().addRuleViolation(createRuleViolation(ctx, childNodeName.getBeginLine(), msg)); 51 52 } 53 } else { 54 if (varName.indexOf("_") >= 0) { 55 String msg = "Variables that are not final should not contain underscores."; 56 RuleContext ctx = (RuleContext)data; 57 ctx.getReport().addRuleViolation(createRuleViolation(ctx, childNodeName.getBeginLine(), msg)); 58 } 59 if (Character.isUpperCase(varName.charAt(0))) { 60 String msg = "Variables should start with a lowercase character"; 61 RuleContext ctx = (RuleContext)data; 62 ctx.getReport().addRuleViolation(createRuleViolation(ctx, childNodeName.getBeginLine(), msg)); 63 } 64 65 } 66 } 67 return data; 68 } 69 }

This page was automatically generated by Maven