/*
* FindBugs - Find Bugs in Java programs
* Copyright (C) 2005, University of Maryland
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package edu.umd.cs.findbugs.ba;
import edu.umd.cs.findbugs.Detector;
import edu.umd.cs.findbugs.annotations.CheckForNull;
/**
* @author pugh
*/
public class CheckReturnValueAnnotation extends AnnotationEnumeration<CheckReturnValueAnnotation> {
final int priority;
final String pattern;
public final static CheckReturnValueAnnotation CHECK_RETURN_VALUE_UNKNOWN = new CheckReturnValueAnnotation(
"UnknownCheckReturnValue", 0, Detector.EXP_PRIORITY);
public final static CheckReturnValueAnnotation CHECK_RETURN_VALUE_HIGH = new CheckReturnValueAnnotation(
"CheckReturnValueHigh", 1, Detector.HIGH_PRIORITY);
public final static CheckReturnValueAnnotation CHECK_RETURN_VALUE_MEDIUM = new CheckReturnValueAnnotation(
"CheckReturnValue", 2, Detector.NORMAL_PRIORITY);
public final static CheckReturnValueAnnotation CHECK_RETURN_VALUE_LOW = new CheckReturnValueAnnotation(
"CheckReturnValueLow", 3, Detector.LOW_PRIORITY);
public final static CheckReturnValueAnnotation CHECK_RETURN_VALUE_IGNORE = new CheckReturnValueAnnotation(
"OkToIgnoreReturnValue", 4, Detector.IGNORE_PRIORITY);
public final static CheckReturnValueAnnotation CHECK_RETURN_VALUE_VERY_HIGH = new CheckReturnValueAnnotation(
"CheckReturnValueVeryHigh", 5, Detector.HIGH_PRIORITY-1);
public final static CheckReturnValueAnnotation CHECK_RETURN_VALUE_LOW_BAD_PRACTICE = new CheckReturnValueAnnotation(
"CheckReturnValueLow", 6, "RV_RETURN_VALUE_IGNORED_BAD_PRACTICE", Detector.LOW_PRIORITY);
public final static CheckReturnValueAnnotation CHECK_RETURN_VALUE_MEDIUM_BAD_PRACTICE = new CheckReturnValueAnnotation(
"CheckReturnValueLow", 7, "RV_RETURN_VALUE_IGNORED_BAD_PRACTICE", Detector.NORMAL_PRIORITY);
private final static CheckReturnValueAnnotation[] myValues = { CHECK_RETURN_VALUE_UNKNOWN,
CHECK_RETURN_VALUE_HIGH,CHECK_RETURN_VALUE_MEDIUM, CHECK_RETURN_VALUE_LOW, CHECK_RETURN_VALUE_IGNORE };
@CheckForNull public static CheckReturnValueAnnotation parse(String priority) {
if (priority == null)
return CHECK_RETURN_VALUE_MEDIUM;
if (priority.endsWith("HIGH"))
return CHECK_RETURN_VALUE_HIGH;
if (priority.endsWith("MEDIUM"))
return CHECK_RETURN_VALUE_MEDIUM;
if (priority.endsWith("LOW"))
return CHECK_RETURN_VALUE_LOW;
throw new IllegalArgumentException("Bad priority: " + priority);
}
public static CheckReturnValueAnnotation[] values() {
return myValues.clone();
}
public int getPriority() {
return priority;
}
public String getPattern() {
return pattern;
}
private CheckReturnValueAnnotation(String s, int i, int p) {
super(s,i);
pattern = "RV_RETURN_VALUE_IGNORED";
priority = p;
}
private CheckReturnValueAnnotation(String s, int i, String pattern, int p) {
super(s,i);
this.pattern = pattern;
priority = p;
}
}