View Javadoc

1   /* Generated By:JJTree: Do not edit this line. ASTAnnotation.java */
2   
3   package net.sourceforge.pmd.lang.java.ast;
4   
5   import java.util.Arrays;
6   import java.util.List;
7   
8   import net.sourceforge.pmd.Rule;
9   
10  public class ASTAnnotation extends AbstractJavaNode {
11  
12      private static List<String> unusedRules = Arrays.asList(new String[] { "UnusedPrivateField", "UnusedLocalVariable",
13  	    "UnusedPrivateMethod", "UnusedFormalParameter" });
14  
15      private static List<String> serialRules = Arrays.asList(new String[] { "BeanMembersShouldSerialize", "MissingSerialVersionUID"});
16  
17      public ASTAnnotation(int id) {
18  	super(id);
19      }
20  
21      public ASTAnnotation(JavaParser p, int id) {
22  	super(p, id);
23      }
24  
25      public boolean suppresses(Rule rule) {
26  	final String ruleAnno = "\"PMD." + rule.getName() + "\"";
27  
28  	if (jjtGetChild(0) instanceof ASTSingleMemberAnnotation) {
29  	    ASTSingleMemberAnnotation n = (ASTSingleMemberAnnotation) jjtGetChild(0);
30  
31  	    if (n.jjtGetChild(0) instanceof ASTName) {
32  		ASTName annName = (ASTName) n.jjtGetChild(0);
33  
34  		if (annName.getImage().equals("SuppressWarnings")) {
35  		    List<ASTLiteral> nodes = n.findDescendantsOfType(ASTLiteral.class);
36  		    for (ASTLiteral element : nodes) {
37  			if (element.hasImageEqualTo("\"PMD\"") || element.hasImageEqualTo(ruleAnno)
38  				// Check for standard annotations values
39  				|| element.hasImageEqualTo("\"all\"")
40  				|| element.hasImageEqualTo("\"serial\"") && serialRules.contains(rule.getName())
41  				|| element.hasImageEqualTo("\"unused\"") && unusedRules.contains(rule.getName())) {
42  			    return true;
43  			}
44  		    }
45  		}
46  	    }
47  	}
48  	return false;
49      }
50  
51      /**
52       * Accept the visitor.
53       */
54      @Override
55      public Object jjtAccept(JavaParserVisitor visitor, Object data) {
56  	return visitor.visit(this, data);
57      }
58  }