/** * Register a BugPattern. * * @param bugPattern * the BugPattern */ public void registerBugPattern(BugPattern bugPattern) { bugPatternMap.put(bugPattern.getType(), bugPattern); }
protected void unRegisterBugPattern(BugPattern bugPattern) { bugPatternMap.remove(bugPattern.getType()); }
@Override public BugInstance findBug(String instanceHash, String bugType, int lineNumber) { for (BugInstance bug : bugSet) { if (bug.getInstanceHash().equals(instanceHash) && bug.getBugPattern().getType().equals(bugType) && bug.getPrimarySourceLineAnnotation().getStartLine() == lineNumber) { return bug; } } return null; }
@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()); } } }
private void foundInAutogeneratedMethod() { if (annotationList.size() != 2) { return; } priority+=2; setProperty("FOUND_IN_SYNTHETIC_METHOD", "true"); if (SystemProperties.ASSERTIONS_ENABLED && AnalysisContext.analyzingApplicationClass() && priority <= 3) { AnalysisContext.logError("Adding error " + getBugPattern().getType() + " to synthetic method " + getPrimaryMethod()); } }
bugPattern = b.getBugPattern().getType(); if (b.getFirstVersion() > 0) { additionTimes.add(b.getFirstVersion());
/** * Returns a printable String concatenating bug locations. */ private static String getBugsLocations(List<BugInstance> unexpectedBugs) { StringBuilder message = new StringBuilder(); for (BugInstance bugInstance : unexpectedBugs) { message.append("\n"); if (bugInstance.getBugPattern().getType().equals(FB_MISSING_EXPECTED_WARNING)) { message.append("missing "); } else { message.append("unexpected "); } StringAnnotation pattern = (StringAnnotation) bugInstance.getAnnotations().get(2); message.append(pattern.getValue()); message.append(" "); message.append(bugInstance.getPrimarySourceLineAnnotation()); } return message.toString(); }
String match; if (matchPattern) { match = pattern.getType(); } else { match = pattern.getAbbrev();
BugInstance bugInstance = i.next(); BugPattern bugPattern = bugInstance.getBugPattern(); bugTypeSet.add(bugPattern.getType());
private static int rankBugPattern(BugPattern bugPattern, BugRanker... rankers) { String type = bugPattern.getType(); int rank = 0; for (BugRanker b : rankers) {
assertEquals("MS_MUTABLE_ARRAY", bug.getBugPattern().getType()); assertEquals("1acc5c5b9b7ab9efacede805afe1e53a", bug.getInstanceHash()); assertEquals(16, bug.getBugRank());
assertEquals(1, bc.getCollection().size()); BugInstance bug = bc.getCollection().iterator().next(); assertEquals("MS_MUTABLE_ARRAY", bug.getBugPattern().getType()); assertEquals("1acc5c5b9b7ab9efacede805afe1e53a", bug.getInstanceHash()); assertEquals(16, bug.getBugRank());
assertEquals(1, bc.getCollection().size()); BugInstance bug = bc.getCollection().iterator().next(); assertEquals("MS_MUTABLE_ARRAY", bug.getBugPattern().getType()); assertEquals("1acc5c5b9b7ab9efacede805afe1e53a", bug.getInstanceHash()); assertEquals(16, bug.getBugRank());
assertEquals("edu.umd.cs.findbugs.plugins.core", DetectorFactoryCollection.instance().getCorePlugin().getPluginId()); BugInstance bug = bc.getCollection().iterator().next(); assertEquals("MS_MUTABLE_ARRAY", bug.getBugPattern().getType()); assertEquals("1acc5c5b9b7ab9efacede805afe1e53a", bug.getInstanceHash()); assertEquals(16, bug.getBugRank());
/** * Register a BugPattern. * * @param bugPattern * the BugPattern */ public void registerBugPattern(BugPattern bugPattern) { bugPatternMap.put(bugPattern.getType(), bugPattern); }
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()); } }
@Override public BugInstance findBug(String instanceHash, String bugType, int lineNumber) { for (BugInstance bug : bugSet) { if (bug.getInstanceHash().equals(instanceHash) && bug.getBugPattern().getType().equals(bugType) && bug.getPrimarySourceLineAnnotation().getStartLine() == lineNumber) { return bug; } } return null; }
public void foundInSyntheticMethod() { if (annotationList.size() != 2) { return; } priority+=2; setProperty("FOUND_IN_SYNTHETIC_METHOD", "true"); if (SystemProperties.ASSERTIONS_ENABLED && AnalysisContext.analyzingApplicationClass() && priority <= 3) { AnalysisContext.logError("Adding error " + getBugPattern().getType() + " to synthetic method " + getPrimaryMethod()); } }