@Override public void reportBug(@Nonnull BugInstance bugInstance) { BugPattern bugPattern = bugInstance.getBugPattern(); String category = bugPattern.getCategory(); if (categorySet.contains(category)) { getDelegate().reportBug(bugInstance); } else { if (DEBUG) { System.out.println("CategoryFilteringBugReporter: filtered due to category " + category); } } } }
@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; }
public String getCategoryAbbrev() { String categoryAbbrev = null; BugCategory bcat = DetectorFactoryCollection.instance().getBugCategory(getCategory()); if (bcat != null) { categoryAbbrev = bcat.getAbbrev(); } if (categoryAbbrev == null) { categoryAbbrev = TextUIBugReporter.OTHER_CATEGORY_ABBREV; } return categoryAbbrev; }
@Override public void finishPass() { HashSet<BugPattern> claimedReported = new HashSet<>(); for (DetectorFactory d : DetectorFactoryCollection.instance().getFactories()) { claimedReported.addAll(d.getReportedBugPatterns()); } for (BugPattern b : DetectorFactoryCollection.instance().getBugPatterns()) { String category = b.getCategory(); if (!b.isDeprecated() && !"EXPERIMENTAL".equals(category) && !claimedReported.contains(b)) { AnalysisContext.logError("No detector claims " + b.getType()); } } }
/** * @param detectorName */ public void adjustForDetector(String detectorName) { DetectorFactory factory = DetectorFactoryCollection.instance().getFactoryByClassName(detectorName); detectorFactory = factory; if (factory != null) { this.priority += factory.getPriorityAdjustment(); boundPriority(); BugPattern bugPattern = getBugPattern(); if (SystemProperties.ASSERTIONS_ENABLED && !"EXPERIMENTAL".equals(bugPattern.getCategory()) && !factory.getReportedBugPatterns().contains(bugPattern)) { AnalysisContext.logError(factory.getShortName() + " doesn't note that it reports " + bugPattern + " in category " + bugPattern.getCategory()); } } }
@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 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); } }
/** * Get a string describing the bug priority and type. e.g. * "High Priority Correctness" * * @return a string describing the bug priority and type */ public String getPriorityTypeString() { String priorityString = getPriorityString(); BugPattern bugPattern = this.getBugPattern(); // then get the category and put everything together String categoryString = I18N.instance().getBugCategoryDescription(bugPattern.getCategory()); return priorityString + " Confidence " + categoryString; // TODO: internationalize the word "Confidence" }
if (pattern != null) { String categoryAbbrev = null; BugCategory bcat = DetectorFactoryCollection.instance().getBugCategory(pattern.getCategory()); if (bcat != null) { categoryAbbrev = bcat.getAbbrev();
bugCategorySet.add(bugPattern.getCategory()); bugCodeSet.add(bugPattern.getAbbrev());
private void writeBugCategories(XMLOutput xmlOutput) throws IOException { // Find bug categories reported Set<String> bugCatSet = new HashSet<>(); for (Iterator<BugInstance> i = iterator(); i.hasNext();) { BugInstance bugInstance = i.next(); BugPattern bugPattern = bugInstance.getBugPattern(); bugCatSet.add(bugPattern.getCategory()); } // Emit element describing each reported bug code for (String bugCat : bugCatSet) { String bugCatDescription = I18N.instance().getBugCategoryDescription(bugCat); if (bugCatDescription == null) { continue; } XMLAttributeList attributeList = new XMLAttributeList(); attributeList.addAttribute("category", bugCat); xmlOutput.openTag("BugCategory", attributeList); xmlOutput.openTag("Description"); xmlOutput.writeText(bugCatDescription); xmlOutput.closeTag("Description"); xmlOutput.closeTag("BugCategory"); } }
if (!containsCategory(bugPattern.getCategory())) { return false;
lowRank.add(pattern.getCategory());
private void addBugPatterns(Set<String> bugTypeSet) { Element root = document.getRootElement(); for (String bugType : bugTypeSet) { BugPattern bugPattern = DetectorFactoryCollection.instance().lookupBugPattern(bugType); if (bugPattern == null) { continue; } Element details = root.addElement("BugPattern"); details.addAttribute("type", bugType).addAttribute("abbrev", bugPattern.getAbbrev()) .addAttribute("category", bugPattern.getCategory()); details.addElement("ShortDescription").addText(bugPattern.getShortDescription()); details.addElement("Details").addCDATA(bugPattern.getDetailText()); } }
attributeList.addAttribute("type", bugType); attributeList.addAttribute("abbrev", bugPattern.getAbbrev()); attributeList.addAttribute("category", bugPattern.getCategory()); if (bugPattern.getCWEid() != 0) { attributeList.addAttribute("cweid", Integer.toString(bugPattern.getCWEid()));
String category = bugPattern.getCategory(); for (BugRanker b : rankers) { if (b != null) {
attributeList.addAttribute("category", pattern.getCategory());
if (!categoryKey.isEmpty() && thisBugPattern != null && !categoryKey.contains(thisBugPattern.getCategory())) { return false;
public String getCategoryAbbrev() { String categoryAbbrev = null; BugCategory bcat = DetectorFactoryCollection.instance().getBugCategory(getCategory()); if (bcat != null) { categoryAbbrev = bcat.getAbbrev(); } if (categoryAbbrev == null) { categoryAbbrev = TextUIBugReporter.OTHER_CATEGORY_ABBREV; } return categoryAbbrev; }
@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; }