/* * FindBugs Eclipse Plug-in. * Copyright (C) 2003 - 2004, Peter Friese * 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 de.tobject.findbugs.marker; import javax.annotation.Nonnull; import org.eclipse.jdt.core.IJavaElement; import edu.umd.cs.findbugs.BugRankCategory; import edu.umd.cs.findbugs.annotations.Confidence; /** * Marker ids for the findbugs. * * @author Peter Friese * @version 1.0 * @since 13.08.2003 */ public interface FindBugsMarker { /** * Marker type for FindBugs warnings. (should be the plugin id concatenated * with ".findbugsMarker") */ public static final String NAME = "edu.umd.cs.findbugs.plugin.eclipse.findbugsMarker"; public static final String TYPE_SCARIEST = "edu.umd.cs.findbugs.plugin.eclipse.findbugsMarkerScariest"; public static final String TYPE_SCARY = "edu.umd.cs.findbugs.plugin.eclipse.findbugsMarkerScary"; public static final String TYPE_TROUBLING = "edu.umd.cs.findbugs.plugin.eclipse.findbugsMarkerTroubling"; public static final String TYPE_OF_CONCERN = "edu.umd.cs.findbugs.plugin.eclipse.findbugsMarkerOfConcern"; /** * Marker attribute recording the bug type (specific bug pattern). */ public static final String BUG_TYPE = "BUGTYPE"; /** * Marker attribute recording the pattern type (more general pattern group). */ public static final String PATTERN_TYPE = "PATTERNTYPE"; /** * Marker attribute recording the bug rank (as integer). */ public static final String RANK = "RANK"; /** * Marker attribute recording the bug priority (==confidence) (as integer). */ public static final String PRIO_AKA_CONFIDENCE = "CONFIDENCE"; /** * Marker attribute recording the unique id of the BugInstance in its * BugCollection. */ public static final String UNIQUE_ID = "FINDBUGS_UNIQUE_ID"; /** * Marker attribute recording the unique Java handle identifier, see * {@link IJavaElement#getHandleIdentifier()} */ public static final String UNIQUE_JAVA_ID = "UNIQUE_JAVA_ID"; /** * Marker attribute recording the FindBugs detector plugin id */ public static final String DETECTOR_PLUGIN_ID = "DETECTOR_PLUGIN_ID"; /** * Marker attribute recording the primary (first) line of the BugInstance in * its BugCollection (in case same bug reported on many lines). */ public static final String PRIMARY_LINE = "PRIMARY_LINE"; /** * Marker attribute recording the name and timestamp of the first version. */ public static final String FIRST_VERSION = "FIRST_VERSION"; /** * @see BugRankCategory */ enum MarkerRank { Scariest("buggy-tiny.png", BugRankCategory.SCARIEST), Scary("buggy-tiny-orange.png", BugRankCategory.SCARY), Troubling("buggy-tiny-yellow.png", BugRankCategory.TROUBLING), OfConcern("buggy-tiny-yellow2.png", BugRankCategory.OF_CONCERN); private final String icon; private final BugRankCategory rankCategory; MarkerRank(String icon, BugRankCategory rankCategory) { this.icon = icon; this.rankCategory = rankCategory; } public static MarkerRank getRank(int bugRank) { MarkerRank[] values = MarkerRank.values(); for (MarkerRank mr : values) { if (bugRank <= mr.rankCategory.maxRank) { return mr; } } throw new IllegalArgumentException("Illegal rank " + bugRank); } public String iconName() { return icon; } @Override public String toString() { if(this == OfConcern) { return "Of Concern"; } return name(); } } /** * @see Confidence */ enum MarkerConfidence { High(Confidence.HIGH), Normal(Confidence.MEDIUM), Low(Confidence.LOW), Ignore(Confidence.IGNORE); private final Confidence confidence; private MarkerConfidence(Confidence confidence){ this.confidence = confidence; } public String iconName(){ return "confidence-" + name().toLowerCase() + ".png"; } /** * XXX replace numeric values and double mapping through simple string id * @param confidence name as defined by {@link #name()} * @return matching confidence, never null */ @Nonnull public static MarkerConfidence getConfidence(int bugPrio){ Confidence con = Confidence.getConfidence(bugPrio); MarkerConfidence[] values = MarkerConfidence.values(); for (MarkerConfidence mc : values) { if(mc.confidence == con){ return mc; } } return Ignore; } /** * @param confidence name as defined by {@link #name()} * @return matching confidence, never null */ @Nonnull public static MarkerConfidence getConfidence(String confidence){ try { return MarkerConfidence.valueOf(confidence); } catch (IllegalArgumentException e) { return Ignore; } } } }