1 /***
2 * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3 */
4 package net.sourceforge.pmd;
5
6 import java.util.HashSet;
7 import java.util.Iterator;
8 import java.util.List;
9 import java.util.Set;
10
11 public class RuleSet {
12 private Set rules = new HashSet();
13 private String name;
14 private String description;
15
16 /***
17 * Indicates whether or not the rule set should be included in PMD's analysis.
18 * True to include the rule set; otherwise, false to exclude the rule set.
19 */
20 private boolean m_include;
21
22 /***
23 * The name of the file the rule set is stored in, e.g., "basic_rules.xml". The user may
24 * change the rule set name; therefore, the rule set name cannot be used for a file name.
25 * This variable is set when the rule set is read.
26 */
27 private String m_fileName;
28
29 public int size() {
30 return rules.size();
31 }
32
33 public void addRule(Rule rule) {
34 rules.add(rule);
35 }
36
37 public Set getRules() {
38 return rules;
39 }
40
41 public Rule getRuleByName(String ruleName) {
42 for (Iterator i = rules.iterator(); i.hasNext();) {
43 Rule r = (Rule) i.next();
44 if (r.getName().equals(ruleName)) {
45 return r;
46 }
47 }
48 throw new RuntimeException("Couldn't find rule named " + ruleName + " in the ruleset " + name);
49 }
50
51 public void addRuleSet(RuleSet ruleSet) {
52 rules.addAll(ruleSet.getRules());
53 }
54
55 public void apply(List acuList, RuleContext ctx) {
56 Iterator rs = rules.iterator();
57 while (rs.hasNext()) {
58 Rule rule = (Rule) rs.next();
59
60 rule.apply(acuList, ctx);
61 }
62 }
63
64 public String getName() {
65 return name;
66 }
67
68 public void setName(String name) {
69 this.name = name;
70 }
71
72 public String getDescription() {
73 return description;
74 }
75
76 public void setDescription(String description) {
77 this.description = description;
78 }
79
80 /***
81 * Returns true when the rule set is included in PMD's analysis; otherwise, false when
82 * it is excluded.
83 *
84 * @return True to include during analysis.
85 */
86 public boolean include() {
87 return m_include;
88 }
89
90 /***
91 * Set to true when the rule set is included in PMD's analysis; otherwise, set to false
92 * when it is excluded.
93 *
94 * @param include True to include during analysis.
95 */
96 public void setInclude(boolean include) {
97 m_include = include;
98 }
99
100 /***
101 * Get the name of the file the rule set is to be stored in, e.g., "basic_rules.xml".
102 *
103 * @return The name of the rule set file.
104 */
105 public String getFileName() {
106 if (m_fileName == null) {
107 m_fileName = name.toLowerCase().replace(' ', '_') + ".xml";
108 }
109
110 return m_fileName;
111 }
112
113 /***
114 * Set the name of the file the rule set is to be stored in, e.g., "basic_rules.xml".
115 *
116 * @param fileName The name of the rule set file.
117 */
118 public void setFileName(String fileName) {
119 if (fileName != null) {
120 fileName = fileName.trim();
121
122 if (fileName.length() == 0) {
123 fileName = null;
124 }
125 }
126
127 m_fileName = fileName;
128 }
129 }
This page was automatically generated by Maven