edu.umd.cs.findbugs.detect
Class LazyInit
java.lang.Object
edu.umd.cs.findbugs.ByteCodePatternDetector
edu.umd.cs.findbugs.detect.LazyInit
- All Implemented Interfaces:
- Detector, Priorities, StatelessDetector, java.lang.Cloneable
public final class LazyInit
- extends ByteCodePatternDetector
- implements StatelessDetector
Methods inherited from class java.lang.Object |
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
LazyInit
public LazyInit(BugReporter bugReporter)
clone
public java.lang.Object clone()
- Specified by:
clone
in interface StatelessDetector
- Overrides:
clone
in class java.lang.Object
getBugReporter
public BugReporter getBugReporter()
- Specified by:
getBugReporter
in class ByteCodePatternDetector
getPattern
public ByteCodePattern getPattern()
- Description copied from class:
ByteCodePatternDetector
- Get the ByteCodePattern for this detector.
- Specified by:
getPattern
in class ByteCodePatternDetector
prescreen
public boolean prescreen(org.apache.bcel.classfile.Method method,
ClassContext classContext)
- Description copied from class:
ByteCodePatternDetector
- Prescreen a method.
It is a valid, but dumb, implementation simply to return true unconditionally.
A better implementation is to call ClassContext.getBytecodeSet() to check
whether the method actually contains the bytecode instructions that
the pattern will look for. The theory is that checking the bytecode
set is very fast, while building the MethodGen, CFG, ValueNumberAnalysis,
etc. objects required to match ByteCodePatterns is slow, and the bytecode
pattern matching algorithm is also not particularly fast.
As a datapoint, prescreening speeds up the BCPDoubleCheck detector
by a factor of 5 with no loss of generality and only a dozen
or so extra lines of code.
- Specified by:
prescreen
in class ByteCodePatternDetector
- Parameters:
method
- the methodclassContext
- the ClassContext for the method
- Returns:
- true if the method should be analyzed for instances of the
ByteCodePattern
reportMatch
public void reportMatch(ClassContext classContext,
org.apache.bcel.classfile.Method method,
ByteCodePatternMatch match)
throws CFGBuilderException,
DataflowAnalysisException
- Description copied from class:
ByteCodePatternDetector
- Called to report an instance of the ByteCodePattern.
- Specified by:
reportMatch
in class ByteCodePatternDetector
- Parameters:
classContext
- the ClassContext for the analyzed classmethod
- the method to instance appears inmatch
- the ByteCodePatternMatch object representing the match
of the ByteCodePattern against actual instructions in the method
- Throws:
CFGBuilderException
DataflowAnalysisException
FindBugs™ is licenced under the LGPL. Copyright © 2006 University of Maryland.