@Override public boolean match(BugInstance bugInstance) { if (DEBUG) { System.out.println("Checking " + bugInstance); System.out.println(" type:" + bugInstance.getType()); System.out.println(" against: " + bugPattern); } if (!(bugPattern == null || bugInstance.getType().startsWith(bugPattern) || bugInstance.getBugPattern().getCategory().equalsIgnoreCase(bugPattern) || bugInstance.getBugPattern() .getAbbrev().equalsIgnoreCase(bugPattern))) { return false; } if (DEBUG) { System.out.println(" pattern matches"); } return true; }
/** * Get the BugPattern. */ public @Nonnull BugPattern getBugPattern() { BugPattern result = DetectorFactoryCollection.instance().lookupBugPattern(getType()); if (result != null) { return result; } AnalysisContext.logError("Unable to find description of bug pattern " + getType()); result = DetectorFactoryCollection.instance().lookupBugPattern("UNKNOWN"); if (result != null) { return result; } return BugPattern.REALLY_UNKNOWN; }
@Override public boolean match(BugInstance bugInstance) { boolean result1 = codes.match(bugInstance.getAbbrev()); boolean result2 = patterns.match(bugInstance.getType()); boolean result3 = categories.match(bugInstance.getBugPattern().getCategory()); if (DEBUG) { System.out.println("Matching " + bugInstance.getAbbrev() + "/" + bugInstance.getType() + "/" + bugInstance.getBugPattern().getCategory() + " with " + this + ", result = " + result1 + "/" + result2 + "/" + result3); } return result1 || result2 || result3; }
outputStream.print(bugInstance.getType()); outputStream.print(" ");
BugInstance bugInstance = bugInstanceIter.next(); String bugType = bugInstance.getType(); bugTypeSet.add(bugType);
System.out.println("Checking " + expectedBugCodes + " against " + warnings.size() + " bugs"); for (BugInstance b : warnings) { System.out.println(" " + b.getType());
criteriaMatches &= bugInstance.getType().equals(bugType);
throw new IllegalStateException("BugInstance for " + getType() + " must contain at least one class, method, or field annotation");
if (bugPattern != null && !bugPattern.matcher(bug.getType()).find()) { return false;
public static BugInstance obfuscate(BugInstance b) { final BugInstance result = new BugInstance(b.getType(), b.getPriority()); BugAnnotationVisitor visitor = new BugAnnotationVisitor() {
public void toElement(BugInstance bugInstance) { String className = bugInstance.getPrimaryClass().getClassName(); Element element = (Element) root.selectSingleNode(FILE_ELEMENT_NAME + "[@classname='" + className + "']"); if (element == null) { element = root.addElement(FILE_ELEMENT_NAME); element.addAttribute("classname", className); } element = element.addElement(ELEMENT_NAME); element.addAttribute("type", bugInstance.getType()); switch (bugInstance.getPriority()) { case Priorities.EXP_PRIORITY: element.addAttribute("priority", "Experimental"); break; case Priorities.LOW_PRIORITY: element.addAttribute("priority", "Low"); break; case Priorities.NORMAL_PRIORITY: element.addAttribute("priority", "Normal"); break; case Priorities.HIGH_PRIORITY: element.addAttribute("priority", "High"); break; default: assert false; } element.addAttribute("message", xmlEscape(bugInstance.getMessage())); SourceLineAnnotation line = bugInstance.getPrimarySourceLineAnnotation(); element.addAttribute("line", Integer.toString(line.getStartLine())); }
public boolean matches(Object obj) { if(! (obj instanceof BugInstance)) { return false; } BugInstance bug = (BugInstance) obj; return bugType.equals(bug.getType()); }
@Override protected void doReportBug(final BugInstance bug) { if (!ignored.contains(bug.getType())) { super.doReportBug(bug); } } };
@Override protected void doReportBug(final BugInstance bug) { if (!ignored.contains(bug.getType())) { super.doReportBug(bug); } } };
private String printBug(BugInstance bug, List<AnalyzerConfig.Path> sources) { final int rank = BugRanker.findRank(bug); final SourceLineAnnotation line = bug.getPrimarySourceLineAnnotation(); final int startLine = line.getStartLine() <= 0 ? 0 : line.getStartLine(); final String msg = bug.getMessage(); final int pos = msg.indexOf(':'); final String message = msg.substring(pos + 2).replace('\n', ' '); return String.format("%2d %-8s %-45s %s:%d %s", rank, priority(bug), bug.getType(), sourcePath(line.getSourcePath(), sources), startLine, message); }
private String printBug(BugInstance bug, List<AnalyzerConfig.Path> sources) { final int rank = BugRanker.findRank(bug); final SourceLineAnnotation line = bug.getPrimarySourceLineAnnotation(); final int startLine = line.getStartLine() <= 0 ? 0 : line.getStartLine(); final String msg = bug.getMessage(); final int pos = msg.indexOf(':'); final String message = msg.substring(pos + 2).replace('\n', ' '); return String.format("%2d %-8s %-45s %s:%d %s", rank, priority(bug), bug.getType(), sourcePath(line.getSourcePath(), sources), startLine, message); }
@Override public boolean match(BugInstance bugInstance) { boolean result1 = codes.match(bugInstance.getAbbrev()); boolean result2 = patterns.match(bugInstance.getType()); boolean result3 = categories.match(bugInstance.getBugPattern().getCategory()); if (DEBUG) { System.out.println("Matching " + bugInstance.getAbbrev() + "/" + bugInstance.getType() + "/" + bugInstance.getBugPattern().getCategory() + " with " + this + ", result = " + result1 + "/" + result2 + "/" + result3); } return result1 || result2 || result3; }
@Override protected ActionResult doAccept(BugInstance issue, Ignore action) { final MethodAnnotation method = issue.getPrimaryMethod(); final String className = issue.getPrimaryClass().getClassName(); final String methodName = method == null ? null : method.getMethodName(); final Language language = Language.byFilename(issue.getPrimaryClass().getSourceFileName()); return action.accept(new NamedLocation(issue.getType(), language, className, methodName, true)); }
@Override protected ActionResult doAccept(BugInstance issue, Ignore action) { final MethodAnnotation method = issue.getPrimaryMethod(); final String className = issue.getPrimaryClass().getClassName(); final String methodName = method == null ? null : method.getMethodName(); final Language language = Language.byFilename(issue.getPrimaryClass().getSourceFileName()); return action.accept(new NamedLocation(issue.getType(), language, className, methodName, true)); }