/**
* BSD-style license; for more info see http://pmd.sourceforge.net/license.html
*/
package net.sourceforge.pmd;
/**
* These are the possible Rule priority values.
*
* For backward compatibility, priorities range in value from 1 to 5, with 5
* being the lowest priority. This means the ordinal value of the Enum should be
* avoided in favor of {@link RulePriority#getPriority()} and
* {@link RulePriority#valueOf(int)}
*
* @see <a href="http://pmd.sourceforge.net/pmd-5.1.2/rule-guidelines.html">How
* to define rules priority</a>
*/
public enum RulePriority {
/** High: Change absolutely required. Behavior is critically broken/buggy */
HIGH(1, "High"),
/**
* Medium to high: Change highly recommended. Behavior is quite likely to be
* broken/buggy.
*/
MEDIUM_HIGH(2, "Medium High"),
/**
* Medium: Change recommended. Behavior is confusing, perhaps buggy, and/or
* against standards/best practices.
*/
MEDIUM(3, "Medium"),
/**
* Medium to low: Change optional. Behavior is not likely to be buggy, but
* more just flies in the face of standards/style/good taste.
*/
MEDIUM_LOW(4, "Medium Low"),
/**
* Low: Change highly optional. Nice to have, such as a consistent naming
* policy for package/class/fields...
*/
LOW(5, "Low");
private final int priority;
private final String name;
RulePriority(int priority, String name) {
this.priority = priority;
this.name = name;
}
/**
* Get the priority value as a number. This is the value to be used in the
* externalized form of a priority (e.g. in RuleSet XML).
*
* @return The <code>int</code> value of the priority.
*/
public int getPriority() {
return priority;
}
/**
* Get the descriptive name of this priority.
*
* @return The descriptive name.
*/
public String getName() {
return name;
}
/**
* Returns the descriptive name of the priority.
*
* @return descriptive name of the priority
* @see #getName()
*/
@Override
public String toString() {
return name;
}
/**
* Get the priority which corresponds to the given number as returned by
* {@link RulePriority#getPriority()}. If the number is an invalid value,
* then {@link RulePriority#LOW} will be returned.
*
* @param priority
* The numeric priority value.
* @return The priority.
*/
public static RulePriority valueOf(int priority) {
try {
return RulePriority.values()[priority - 1];
} catch (ArrayIndexOutOfBoundsException e) {
return LOW;
}
}
}