@Override public int compare(BugInstance lhs, BugInstance rhs) { ClassAnnotation lca = lhs.getPrimaryClass(); ClassAnnotation rca = rhs.getPrimaryClass(); if (lca == null || rca == null) { throw new IllegalStateException("null class annotation: " + lca + "," + rca); } int cmp = lca.getClassName().compareTo(rca.getClassName()); if (cmp != 0) { return cmp; } return lhs.compareTo(rhs); }
@Override public boolean match(BugInstance bugInstance) { if (!super.match(bugInstance)) { return false; } ClassAnnotation primaryClassAnnotation = bugInstance.getPrimaryClass(); if (DEBUG) { System.out.println("Compare " + primaryClassAnnotation + " with " + packageName); } String className = primaryClassAnnotation.getClassName(); return className.startsWith(packageName); } }
@Override public boolean match(BugInstance bugInstance) { if (!super.match(bugInstance)) { return false; } ClassAnnotation primaryClassAnnotation = bugInstance.getPrimaryClass(); if (DEBUG) { System.out.println("Compare " + primaryClassAnnotation + " with " + clazz); } return clazz.contains(primaryClassAnnotation); } }
@Override public boolean match(BugInstance bugInstance) { ClassAnnotation primaryClassAnnotation = bugInstance.getPrimaryClass(); if(primaryClassAnnotation == null){ return false; } String bugFileName = primaryClassAnnotation.getSourceFileName(); if(bugFileName == null || bugFileName.isEmpty()){ return false; } boolean result = fileName.match(bugFileName); if (DEBUG) { System.out.println("Matching " + bugFileName + " with " + fileName + ", result = " + result); } return result; }
public void countBug(BugInstance b) { String packageName = b.getPrimaryClass().getPackageName(); countPackageMember(packageName); }
@Override public boolean match(BugInstance bugInstance) { ClassAnnotation classAnnotation = bugInstance.getPrimaryClass(); if (role != null && !"".equals(role)) { for (BugAnnotation a : bugInstance.getAnnotations()) { if (a instanceof ClassAnnotation && role.equals(a.getDescription())) { classAnnotation = (ClassAnnotation) a; break; } } } String bugClassName = classAnnotation.getClassName(); boolean result = className.match(bugClassName); if (DEBUG) { System.out.println("Matching " + bugClassName + " with " + className + ", result = " + result); } return result; }
@Override public boolean match(BugInstance b) { ClassAnnotation clazz = b.getPrimaryClass().getTopLevelClass(); Collection<WarningSuppressor> c = suppressedWarnings.get(clazz); if (c != null) { for (WarningSuppressor w : c) { if (w.match(b)) { count++; return true; } } } for (Collection<WarningSuppressor> c2 : suppressedPackageWarnings.values()) { for (WarningSuppressor w : c2) { if (w.match(b)) { count++; return true; } } } return false; }
public String getAbridgedMessage() { BugPattern bugPattern = getBugPattern(); String pattern = getLongDescription().replaceAll(" in \\{1\\}", ""); String shortPattern = bugPattern.getShortDescription(); try { FindBugsMessageFormat format = new FindBugsMessageFormat(pattern); return format.format(annotationList.toArray(new BugAnnotation[annotationList.size()]), getPrimaryClass(), true); } catch (RuntimeException e) { AnalysisContext.logError("Error generating bug msg ", e); return shortPattern + " [Error3 generating customized description]"; } }
/** * Format a string describing this bug instance. * * @return the description */ @Nonnull public String getMessageWithoutPrefix() { BugPattern bugPattern = getBugPattern(); String pattern, shortPattern; pattern = getLongDescription(); shortPattern = bugPattern.getShortDescription(); try { FindBugsMessageFormat format = new FindBugsMessageFormat(pattern); return format.format(annotationList.toArray(new BugAnnotation[annotationList.size()]), getPrimaryClass()); } catch (RuntimeException e) { AnalysisContext.logError("Error generating bug msg ", e); return shortPattern + " [Error generating customized description]"; } }
@Override public void reportBug(@Nonnull BugInstance bugInstance) { if (!category.equals(bugInstance.getBugPattern().getCategory())) { getDelegate().reportBug(bugInstance); return; } if (check.isEmpty()) { return; } ClassAnnotation c = bugInstance.getPrimaryClass(); @DottedClassName String packageName = c.getPackageName(); while (true) { if (check.contains(packageName)) { getDelegate().reportBug(bugInstance); return; } else if (dontCheck.contains(packageName)) { return; } int i = packageName.lastIndexOf('.'); if (i < 0) { return; } packageName = packageName.substring(0, i); } }
String prefix = ClassName.extractPackagePrefix(b.getPrimaryClass().getPackageName(), prefixLength); Integer v = map.get(prefix); if (v == null) {
/** * Format a string describing this bug instance. * * @return the description */ public String getMessage() { BugPattern bugPattern = getBugPattern(); String pattern = bugPattern.getAbbrev() + ": " + getLongDescription(); FindBugsMessageFormat format = new FindBugsMessageFormat(pattern); try { return format.format(annotationList.toArray(new BugAnnotation[annotationList.size()]), getPrimaryClass()); } catch (RuntimeException e) { AnalysisContext.logError("Error generating bug msg ", e); return bugPattern.getShortDescription() + " [Error generating customized description]"; } }
ClassAnnotation primaryClass = bugInstance.getPrimaryClass(); if (primaryClass != null && !AnalysisContext.currentAnalysisContext().isApplicationClass(primaryClass.getClassName())) { if (DEBUG) {
ClassAnnotation primeClass = getPrimaryClass();
ClassAnnotation clazz = warning.getPrimaryClass(); if (clazz != null) { ClassDescriptor classDesc = clazz.getClassDescriptor();
cmp = compareClassesAllowingNull(lhs.getPrimaryClass(), rhs.getPrimaryClass()); if (cmp != 0) { return cmp;
return srcLine; if ((srcLine = inspectPackageMemberSourceLines(getPrimaryClass())) != null) { return srcLine;
primaryAnnotations = new IdentityHashMap<>(); primaryAnnotations.put(getPrimarySourceLineAnnotation(), null); primaryAnnotations.put(getPrimaryClass(), null); primaryAnnotations.put(getPrimaryField(), null); primaryAnnotations.put(getPrimaryMethod(), null);
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())); }
@Test public void match() throws Exception { SourceMatcher sm = new SourceMatcher(fileName); // no source set: test incomplete data assertFalse(sm.match(bug)); bug.addClass("bla", null); assertFalse(sm.match(bug)); ClassAnnotation primaryClass = bug.getPrimaryClass(); primaryClass.setSourceLines(SourceLineAnnotation.createUnknown("bla", "")); assertFalse(sm.match(bug)); // set right source file primaryClass.setSourceLines(SourceLineAnnotation.createUnknown("bla", fileName)); // exact match assertTrue(sm.match(bug)); // regexp first part sm = new SourceMatcher("~bla.*"); assertTrue(sm.match(bug)); sm = new SourceMatcher("~blup.*"); assertFalse(sm.match(bug)); // regexp second part sm = new SourceMatcher("~.*\\.groovy"); assertTrue(sm.match(bug)); sm = new SourceMatcher("~.*\\.java"); assertFalse(sm.match(bug)); }