BugInstance bugInstance = i.next(); BugPattern bugPattern = bugInstance.getBugPattern(); bugTypeSet.add(bugPattern.getType()); attributeList.addAttribute("abbrev", bugPattern.getAbbrev()); attributeList.addAttribute("category", bugPattern.getCategory()); if (bugPattern.getCWEid() != 0) { attributeList.addAttribute("cweid", Integer.toString(bugPattern.getCWEid())); xmlOutput.writeText(bugPattern.getShortDescription()); xmlOutput.closeTag("ShortDescription"); xmlOutput.writeCDATA(bugPattern.getDetailText()); xmlOutput.closeTag("Details");
throw new IllegalArgumentException("Unknown detector: " + adjustmentTarget); pattern.adjustPriority(adjustmentAmount);
public int getCWEid() { BugPattern pattern = getBugPattern(); int cweid = pattern.getCWEid(); if (cweid != 0) { return cweid; } BugCode bugCode = pattern.getBugCode(); return bugCode.getCWEid(); } public void writeXML(XMLOutput xmlOutput, BugCollection bugCollection, boolean addMessages) throws IOException {
/** * Get the detail text as a complete HTML document. */ public String getDetailHTML() { return getDetailHTML(getDetailText()); }
@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()); } } }
/** * Register a BugPattern. * * @param bugPattern * the BugPattern */ public void registerBugPattern(BugPattern bugPattern) { bugPatternMap.put(bugPattern.getType(), bugPattern); }
@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); } } } }
private static int rankBugPattern(BugPattern bugPattern, BugRanker... rankers) { String type = bugPattern.getType(); int rank = 0; for (BugRanker b : rankers) { String kind = bugPattern.getAbbrev(); for (BugRanker b : rankers) { if (b != null) { String category = bugPattern.getCategory(); for (BugRanker b : rankers) { if (b != null) {
private void emitSummaryTable() { PrintStream out = getPrintStream(); out.println("<h2>Summary</h2>"); out.println("<table width=\"100%\">"); out.println("<tr bgcolor=\"#b9b9fe\"><th>Description</th><th>Category</th></tr>"); ColorAlternator colorAlternator = new ColorAlternator(TABLE_COLORS); for (BugPattern bugPattern : bugPatternSet) { out.print("<tr bgcolor=\"" + colorAlternator.nextColor() + "\">"); out.print("<td><a href=\"#" + bugPattern.getType() + "\">" + bugPattern.getAbbrev() + ": " + bugPattern.getShortDescription() + "</a></td>"); out.println("<td>" + I18N.instance().getBugCategoryDescription(bugPattern.getCategory()) + "</td></tr>"); } out.println("</table>"); }
bugCategorySet.add(bugPattern.getCategory()); bugCodeSet.add(bugPattern.getAbbrev()); element.addElement("ShortMessage").addText(bugPattern.getShortDescription()); element.addElement("LongMessage").addText(bugInstance.getMessage());
private void emitBugDescriptions() { PrintStream out = getPrintStream(); out.println("<h2>Descriptions</h2>"); for (BugPattern bugPattern : bugPatternSet) { out.println("<h3><a name=\"" + bugPattern.getType() + "\">" + bugPattern.getAbbrev() + ": " + bugPattern.getShortDescription() + " (" + bugPattern.getType() + ")" + "</a></h3>"); out.println(bugPattern.getDetailText()); } }
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()); } }
@Override public void run() { summaryTopPanel.removeAll(); summaryTopPanel.add(mainFrameComponentFactory.bugSummaryComponent(bug.getAbridgedMessage(), bug)); for (BugAnnotation b : bug.getAnnotationsForMessage(true)) { summaryTopPanel.add(mainFrameComponentFactory.bugSummaryComponent(b, bug)); } BugPattern bugPattern = bug.getBugPattern(); String detailText = bugPattern.getDetailText() +"<br><p> <b>Bug kind and pattern: " + bugPattern.getAbbrev() + " - " + bugPattern.getType(); String txt = bugPattern.getDetailHTML(detailText); summaryHtmlArea.setText(txt); summaryTopPanel.add(Box.createVerticalGlue()); summaryTopPanel.revalidate(); SwingUtilities.invokeLater(new Runnable() { @Override public void run() { summaryHtmlScrollPane.getVerticalScrollBar().setValue( summaryHtmlScrollPane.getVerticalScrollBar().getMinimum()); } }); } });
@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; }
@Override protected void emit(BugPattern bugPattern) throws IOException { out.println("<h2>" + bugPattern.getAbbrev() + ": " + bugPattern.getShortDescription() + "</h2>"); out.println(bugPattern.getDetailText()); }
/** * Get a short message string. This is a concrete string (not a format * pattern) which briefly describes the type of bug, without mentioning * particular a particular class/method/field. * * @param key * which short message to retrieve */ public @Nonnull String getShortMessage(String key) { BugPattern bugPattern = DetectorFactoryCollection.instance().lookupBugPattern(key); if (bugPattern == null) { return L10N.getLocalString("err.missing_pattern", "Error: missing bug pattern for key") + " " + key; } return bugPattern.getAbbrev() + ": " + bugPattern.getShortDescription(); }
/** * Get a message string. This is a format pattern for describing an entire * bug instance in a single line. * * @param key * which message to retrieve * * */ @Deprecated public @Nonnull String getMessage(String key) { BugPattern bugPattern = DetectorFactoryCollection.instance().lookupBugPattern(key); if (bugPattern == null) { return L10N.getLocalString("err.missing_pattern", "Error: missing bug pattern for key") + " " + key; } return bugPattern.getAbbrev() + ": " + bugPattern.getLongDescription(); }
BugPattern bugPattern = new BugPattern(type, abbrev, category, experimental, shortDesc, longDesc, detailText, bugsUrl, cweid); boolean deprecated = deprecatedStr.length() > 0 && Boolean.valueOf(deprecatedStr).booleanValue(); if (deprecated) { bugPattern.setDeprecated(deprecated);
/** * Get the abbreviation of this bug instance's BugPattern. This is the same * abbreviation used by the BugCode which the BugPattern is a particular * species of. */ public String getAbbrev() { BugPattern pattern = getBugPattern(); return pattern.getAbbrev(); }