ASTAnnotation.java
01 /* Generated By:JJTree: Do not edit this line. ASTAnnotation.java */
02 
03 package net.sourceforge.pmd.lang.java.ast;
04 
05 import java.util.Arrays;
06 import java.util.List;
07 
08 import net.sourceforge.pmd.Rule;
09 
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(0instanceof ASTSingleMemberAnnotation) {
29       ASTSingleMemberAnnotation n = (ASTSingleMemberAnnotationjjtGetChild(0);
30 
31       if (n.jjtGetChild(0instanceof ASTName) {
32     ASTName annName = (ASTNamen.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 }