View Javadoc
1   /**
2    * BSD-style license; for more info see http://pmd.sourceforge.net/license.html
3    */
4   package net.sourceforge.pmd;
5   
6   /**
7    * These are the possible Rule priority values.
8    * 
9    * For backward compatibility, priorities range in value from 1 to 5, with 5
10   * being the lowest priority. This means the ordinal value of the Enum should be
11   * avoided in favor of {@link RulePriority#getPriority()} and
12   * {@link RulePriority#valueOf(int)}
13   *
14   * @see <a href="http://pmd.sourceforge.net/pmd-5.1.2/rule-guidelines.html">How to define rules priority</a>
15   */
16  public enum RulePriority {
17  
18      /** High: Change absolutely required. Behavior is critically broken/buggy */
19      HIGH(1, "High"),
20      /** Medium to high: Change highly recommended. Behavior is quite likely to be broken/buggy. */
21      MEDIUM_HIGH(2, "Medium High"),
22      /** Medium: Change recommended. Behavior is confusing, perhaps buggy, and/or against standards/best practices. */
23      MEDIUM(3, "Medium"),
24      /** Medium to low: Change optional. Behavior is not likely to be buggy, but more just flies in the face of standards/style/good taste. */
25      MEDIUM_LOW(4, "Medium Low"),
26      /** Low: Change highly optional. Nice to have, such as a consistent naming policy for package/class/fields... */
27      LOW(5, "Low");
28  
29      private final int priority;
30      private final String name;
31  
32      private RulePriority(int priority, String name) {
33          this.priority = priority;
34          this.name = name;
35      }
36  
37      /**
38       * Get the priority value as a number. This is the value to be used in the
39       * externalized form of a priority (e.g. in RuleSet XML).
40       *
41       * @return The <code>int</code> value of the priority.
42       */
43      public int getPriority() {
44          return priority;
45      }
46  
47      /**
48       * Get the descriptive name of this priority.
49       *
50       * @return The descriptive name.
51       */
52      public String getName() {
53          return name;
54      }
55  
56      /**
57       * Returns the descriptive name of the priority.
58       * @return descriptive name of the priority
59       * @see #getName()
60       */
61      @Override
62      public String toString() {
63          return name;
64      }
65  
66      /**
67       * Get the priority which corresponds to the given number as returned by
68       * {@link RulePriority#getPriority()}. If the number is an invalid value,
69       * then {@link RulePriority#LOW} will be returned.
70       *
71       * @param priority The numeric priority value.
72       * @return The priority.
73       */
74      public static RulePriority valueOf(int priority) {
75          try {
76              return RulePriority.values()[priority - 1];
77          } catch (ArrayIndexOutOfBoundsException e) {
78              return LOW;
79          }
80      }
81  }