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.DefaultHandler
Build 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 AnalysisError
analysisError
private java.io.File
base
private static java.lang.String
BUG_COLLECTION
private BugAnnotationWithSourceLines
bugAnnotationWithSourceLines
private BugCollection
bugCollection
private BugInstance
bugInstance
private MapCache<java.lang.String,java.lang.String>
cache
private ClassFeatureSet
classFeatureSet
private static boolean
DEBUG
private java.util.ArrayList<java.lang.String>
elementStack
private Filter
filter
private static java.lang.String
FIND_BUGS_FILTER
(package private) java.util.regex.Pattern
ignoredElement
private static org.slf4j.Logger
LOG
private java.util.Stack<CompoundMatcher>
matcherStack
private int
nestingOfIgnoredElements
(package private) boolean
nextMatchedIsDisabled
private java.util.Set<java.lang.String>
outerElementTags
private Project
project
private static java.lang.String
PROJECT
private java.util.Map<java.lang.String,java.lang.reflect.Method>
qnameCache
(package private) java.util.List<java.lang.String>
sourceDirs
private java.util.ArrayList<java.lang.String>
stackTrace
private java.lang.StringBuilder
textBuffer
private java.lang.String
topLevelName
-
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)
private
SAXBugCollectionHandler(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 void
addMatcher(Matcher m)
void
characters(char[] ch, int start, int length)
private SourceLineAnnotation
createSourceLineAnnotation(java.lang.String qName, org.xml.sax.Attributes attributes)
boolean
discardedElement(java.lang.String qName)
void
endElement(java.lang.String uri, java.lang.String name, java.lang.String qName)
java.lang.String
getOptionalAttribute(org.xml.sax.Attributes attributes, java.lang.String qName)
private java.lang.String
getRequiredAttribute(org.xml.sax.Attributes attributes, java.lang.String attrName, java.lang.String elementName)
java.lang.String
getTextContents()
private boolean
isCompoundElementTag(java.lang.String qName)
private boolean
isTopLevelFilter(java.lang.String qName)
private java.lang.String
makeAbsolute(java.lang.String possiblyRelativePath)
private java.lang.String
memoized(java.lang.String s)
private void
parseBugInstanceContents(java.lang.String qName, org.xml.sax.Attributes attributes)
private long
parseLong(java.lang.String s, long defaultValue)
private void
parseMatcher(java.lang.String qName, org.xml.sax.Attributes attributes)
private void
pushCompoundMatcher(CompoundMatcher m)
private void
pushCompoundMatcherAsChild(CompoundMatcher m)
private void
setAnnotationRole(org.xml.sax.Attributes attributes, BugAnnotation bugAnnotation)
void
startElement(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:
startElement
in interfaceorg.xml.sax.ContentHandler
- Overrides:
startElement
in 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:
endElement
in interfaceorg.xml.sax.ContentHandler
- Overrides:
endElement
in 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:
characters
in interfaceorg.xml.sax.ContentHandler
- Overrides:
characters
in 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
-
-