1 /***
2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3 */
4 package net.sourceforge.pmd;
5
6 import net.sourceforge.pmd.ast.ASTCompilationUnit;
7 import net.sourceforge.pmd.ast.JavaParserVisitorAdapter;
8
9 import java.util.Iterator;
10 import java.util.List;
11 import java.util.Properties;
12
13 public abstract class AbstractRule extends JavaParserVisitorAdapter implements Rule {
14
15 private String name = getClass().getName();
16 private Properties properties = new Properties();
17 private String message;
18 private String description;
19 private String example;
20 private boolean m_include;
21 private int m_priority = LOWEST_PRIORITY;
22
23 public String getDescription() {
24 return description;
25 }
26
27 public void setDescription(String description) {
28 this.description = description;
29 }
30
31 public String getExample() {
32 return example;
33 }
34
35 public void setExample(String example) {
36 this.example = example;
37 }
38
39 public boolean hasProperty(String name) {
40 return properties.containsKey(name);
41 }
42
43 public void addProperty(String name, String value) {
44 properties.setProperty(name, value);
45 }
46
47 public double getDoubleProperty(String name) {
48 return Double.parseDouble(properties.getProperty(name));
49 }
50
51 public int getIntProperty(String name) {
52 return Integer.parseInt(properties.getProperty(name));
53 }
54
55 public boolean getBooleanProperty(String name) {
56 return Boolean.valueOf(properties.getProperty(name)).booleanValue();
57 }
58
59 public String getStringProperty(String name) {
60 return properties.getProperty(name);
61 }
62
63 public String getName() {
64 return name;
65 }
66
67 public void setName(String name) {
68 this.name = name;
69 }
70
71 public String getMessage() {
72 return message;
73 }
74
75 public void setMessage(String message) {
76 this.message = message;
77 }
78
79 public boolean equals(Object o) {
80 if (!(o instanceof Rule)) {
81 return false;
82 }
83 return ((Rule)o).getName().equals(getName());
84 }
85
86 public int hashCode() {
87 return getName().hashCode();
88 }
89
90 protected void visitAll(List acus, RuleContext ctx) {
91 for (Iterator i = acus.iterator(); i.hasNext();) {
92 ASTCompilationUnit node = (ASTCompilationUnit) i.next();
93 visit(node, ctx);
94 }
95 }
96
97 public void apply(List acus, RuleContext ctx) {
98 visitAll(acus, ctx);
99 }
100
101 public RuleViolation createRuleViolation(RuleContext ctx, int lineNumber) {
102 return new RuleViolation(this, lineNumber, ctx);
103 }
104
105 public RuleViolation createRuleViolation(RuleContext ctx, int lineNumber, String specificDescription) {
106 return new RuleViolation(this, lineNumber, specificDescription, ctx);
107 }
108
109 /***
110 ********************************************************************************
111 *
112 * Gets an enumeration to enumerate through this rule's property names.
113 *
114 * @return An enumeration of property names
115 */
116 public Properties getProperties() {
117 return properties;
118 }
119
120 /***
121 *********************************************************************************
122 *
123 * When the rule is to be included in the analysis, returns true; otherwise, returns false.
124 *
125 * @return True when the rule is included in analysis.
126 */
127 public boolean include() {
128 return m_include;
129 }
130
131 /***
132 *********************************************************************************
133 *
134 * When the rule is to be included in the analysis, set to true; otherwise, set to false.
135 *
136 * @param include True when the rule is included in analysis.
137 */
138 public void setInclude(boolean include) {
139 m_include = include;
140 }
141
142 /***
143 *********************************************************************************
144 *
145 * Returns the rule's priority that is used for including the rule in reports and analysis.
146 *
147 * @return A number between 1 and LOWEST_PRIORITY.
148 */
149 public int getPriority() {
150 if ((m_priority < 0) || (m_priority > LOWEST_PRIORITY)) {
151 m_priority = LOWEST_PRIORITY;
152 }
153
154 return m_priority;
155 }
156
157 /***
158 *********************************************************************************
159 *
160 * Returns the rule's priority name that is used for including the rule in reports and analysis.
161 *
162 * @return A member of PRIORITIES.
163 */
164 public String getPriorityName() {
165 return PRIORITIES[getPriority() - 1];
166 }
167
168 /***
169 *********************************************************************************
170 *
171 * A rule will specify a priority for inclusion in reports and analysis. The default
172 * priority is "Low".
173 *
174 * @param The rule's priority of 1..LOWEST_PRIORITY.
175 */
176 public void setPriority(int priority) {
177 if ((priority < 1) || (priority > LOWEST_PRIORITY)) {
178 m_priority = LOWEST_PRIORITY;
179 } else {
180 m_priority = priority;
181 }
182 }
183 }
This page was automatically generated by Maven