Package edu.umd.cs.findbugs
Class SAXBugCollectionHandler
- java.lang.Object
-
- org.xml.sax.helpers.DefaultHandler
-
- edu.umd.cs.findbugs.SAXBugCollectionHandler
-
- All Implemented Interfaces:
org.xml.sax.ContentHandler,org.xml.sax.DTDHandler,org.xml.sax.EntityResolver,org.xml.sax.ErrorHandler
public class SAXBugCollectionHandler extends org.xml.sax.helpers.DefaultHandlerBuild a BugCollection based on SAX events. This is intended to replace the old DOM-based parsing of XML bug result files, which was very slow.
-
-
Field Summary
Fields Modifier and Type Field Description private AnalysisErroranalysisErrorprivate java.io.Filebaseprivate static java.lang.StringBUG_COLLECTIONprivate BugAnnotationWithSourceLinesbugAnnotationWithSourceLinesprivate BugCollectionbugCollectionprivate BugInstancebugInstanceprivate MapCache<java.lang.String,java.lang.String>cacheprivate ClassFeatureSetclassFeatureSetprivate static booleanDEBUGprivate java.util.ArrayList<java.lang.String>elementStackprivate Filterfilterprivate static java.lang.StringFIND_BUGS_FILTER(package private) java.util.regex.PatternignoredElementprivate static org.slf4j.LoggerLOGprivate java.util.Stack<CompoundMatcher>matcherStackprivate intnestingOfIgnoredElements(package private) booleannextMatchedIsDisabledprivate java.util.Set<java.lang.String>outerElementTagsprivate Projectprojectprivate static java.lang.StringPROJECTprivate java.util.Map<java.lang.String,java.lang.reflect.Method>qnameCache(package private) java.util.List<java.lang.String>sourceDirsprivate java.util.ArrayList<java.lang.String>stackTraceprivate java.lang.StringBuildertextBufferprivate java.lang.StringtopLevelName
-
Constructor Summary
Constructors Modifier Constructor Description SAXBugCollectionHandler(BugCollection bugCollection)SAXBugCollectionHandler(BugCollection bugCollection, java.io.File base)SAXBugCollectionHandler(Filter filter, java.io.File base)SAXBugCollectionHandler(Project project, java.io.File base)privateSAXBugCollectionHandler(java.lang.String topLevelName, BugCollection bugCollection, Project project, java.io.File base)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description private voidaddMatcher(Matcher m)voidcharacters(char[] ch, int start, int length)private SourceLineAnnotationcreateSourceLineAnnotation(java.lang.String qName, org.xml.sax.Attributes attributes)booleandiscardedElement(java.lang.String qName)voidendElement(java.lang.String uri, java.lang.String name, java.lang.String qName)java.lang.StringgetOptionalAttribute(org.xml.sax.Attributes attributes, java.lang.String qName)private java.lang.StringgetRequiredAttribute(org.xml.sax.Attributes attributes, java.lang.String attrName, java.lang.String elementName)java.lang.StringgetTextContents()private booleanisCompoundElementTag(java.lang.String qName)private booleanisTopLevelFilter(java.lang.String qName)private java.lang.StringmakeAbsolute(java.lang.String possiblyRelativePath)private java.lang.Stringmemoized(java.lang.String s)private voidparseBugInstanceContents(java.lang.String qName, org.xml.sax.Attributes attributes)private longparseLong(java.lang.String s, long defaultValue)private voidparseMatcher(java.lang.String qName, org.xml.sax.Attributes attributes)private voidpushCompoundMatcher(CompoundMatcher m)private voidpushCompoundMatcherAsChild(CompoundMatcher m)private voidsetAnnotationRole(org.xml.sax.Attributes attributes, BugAnnotation bugAnnotation)voidstartElement(java.lang.String uri, java.lang.String name, java.lang.String qName, org.xml.sax.Attributes attributes)
-
-
-
Field Detail
-
LOG
private static final org.slf4j.Logger LOG
-
FIND_BUGS_FILTER
private static final java.lang.String FIND_BUGS_FILTER
- See Also:
- Constant Field Values
-
PROJECT
private static final java.lang.String PROJECT
- See Also:
- Constant Field Values
-
BUG_COLLECTION
private static final java.lang.String BUG_COLLECTION
- See Also:
- Constant Field Values
-
bugCollection
@CheckForNull private final BugCollection bugCollection
-
project
@CheckForNull private final Project project
-
matcherStack
private final java.util.Stack<CompoundMatcher> matcherStack
-
filter
private Filter filter
-
cache
private final MapCache<java.lang.String,java.lang.String> cache
-
elementStack
private final java.util.ArrayList<java.lang.String> elementStack
-
textBuffer
private final java.lang.StringBuilder textBuffer
-
bugInstance
private BugInstance bugInstance
-
bugAnnotationWithSourceLines
private BugAnnotationWithSourceLines bugAnnotationWithSourceLines
-
analysisError
private AnalysisError analysisError
-
classFeatureSet
private ClassFeatureSet classFeatureSet
-
stackTrace
private final java.util.ArrayList<java.lang.String> stackTrace
-
nestingOfIgnoredElements
private int nestingOfIgnoredElements
-
base
@CheckForNull private final java.io.File base
-
topLevelName
private final java.lang.String topLevelName
-
qnameCache
private final java.util.Map<java.lang.String,java.lang.reflect.Method> qnameCache
-
ignoredElement
java.util.regex.Pattern ignoredElement
-
DEBUG
private static boolean DEBUG
-
nextMatchedIsDisabled
boolean nextMatchedIsDisabled
-
outerElementTags
private final java.util.Set<java.lang.String> outerElementTags
-
sourceDirs
java.util.List<java.lang.String> sourceDirs
-
-
Constructor Detail
-
SAXBugCollectionHandler
private SAXBugCollectionHandler(java.lang.String topLevelName, @CheckForNull BugCollection bugCollection, @CheckForNull Project project, @CheckForNull java.io.File base)
-
SAXBugCollectionHandler
public SAXBugCollectionHandler(BugCollection bugCollection, @CheckForNull java.io.File base)
-
SAXBugCollectionHandler
public SAXBugCollectionHandler(BugCollection bugCollection)
-
SAXBugCollectionHandler
public SAXBugCollectionHandler(Project project, java.io.File base)
-
SAXBugCollectionHandler
public SAXBugCollectionHandler(Filter filter, java.io.File base)
-
-
Method Detail
-
getOptionalAttribute
public java.lang.String getOptionalAttribute(org.xml.sax.Attributes attributes, java.lang.String qName)
-
discardedElement
public boolean discardedElement(java.lang.String qName)
-
getTextContents
public java.lang.String getTextContents()
-
memoized
private java.lang.String memoized(java.lang.String s)
-
startElement
public void startElement(java.lang.String uri, java.lang.String name, java.lang.String qName, org.xml.sax.Attributes attributes) throws org.xml.sax.SAXException- Specified by:
startElementin interfaceorg.xml.sax.ContentHandler- Overrides:
startElementin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
isCompoundElementTag
private boolean isCompoundElementTag(java.lang.String qName)
-
isTopLevelFilter
private boolean isTopLevelFilter(java.lang.String qName)
-
addMatcher
private void addMatcher(Matcher m)
-
pushCompoundMatcherAsChild
private void pushCompoundMatcherAsChild(CompoundMatcher m)
-
pushCompoundMatcher
private void pushCompoundMatcher(CompoundMatcher m)
-
parseMatcher
private void parseMatcher(java.lang.String qName, org.xml.sax.Attributes attributes) throws org.xml.sax.SAXException- Throws:
org.xml.sax.SAXException
-
parseBugInstanceContents
private void parseBugInstanceContents(java.lang.String qName, org.xml.sax.Attributes attributes) throws org.xml.sax.SAXException- Throws:
org.xml.sax.SAXException
-
parseLong
private long parseLong(java.lang.String s, long defaultValue)
-
setAnnotationRole
private void setAnnotationRole(org.xml.sax.Attributes attributes, BugAnnotation bugAnnotation)
-
createSourceLineAnnotation
private SourceLineAnnotation createSourceLineAnnotation(java.lang.String qName, org.xml.sax.Attributes attributes) throws org.xml.sax.SAXException
- Throws:
org.xml.sax.SAXException
-
endElement
public void endElement(java.lang.String uri, java.lang.String name, java.lang.String qName) throws org.xml.sax.SAXException- Specified by:
endElementin interfaceorg.xml.sax.ContentHandler- Overrides:
endElementin classorg.xml.sax.helpers.DefaultHandler- Throws:
org.xml.sax.SAXException
-
makeAbsolute
private java.lang.String makeAbsolute(java.lang.String possiblyRelativePath)
-
characters
public void characters(char[] ch, int start, int length)- Specified by:
charactersin interfaceorg.xml.sax.ContentHandler- Overrides:
charactersin classorg.xml.sax.helpers.DefaultHandler
-
getRequiredAttribute
private java.lang.String getRequiredAttribute(org.xml.sax.Attributes attributes, java.lang.String attrName, java.lang.String elementName) throws org.xml.sax.SAXException- Throws:
org.xml.sax.SAXException
-
-