Package edu.umd.cs.findbugs.ba.bcp
Class MatchAny
java.lang.Object
edu.umd.cs.findbugs.ba.bcp.PatternElement
edu.umd.cs.findbugs.ba.bcp.MatchAny
A "meta" PatternElement that matches any of a list of other child PatternElements. An example of how this is useful is that you might want to match invocations of any of a number of different methods. To do this, you can create a MatchAny with some number of Invoke elements as children.
Note that the minOccur() and maxOccur() counts of the child PatternElements are ignored. A MatchAny element always matches exactly one instruction.
- See Also:
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionboolean
acceptBranch
(Edge edge, org.apache.bcel.generic.InstructionHandle source) Return whether or not it is acceptable to take the given branch.Set a label for this PatternElement.match
(org.apache.bcel.generic.InstructionHandle handle, org.apache.bcel.generic.ConstantPoolGen cpg, ValueNumberFrame before, ValueNumberFrame after, BindingSet bindingSet) Return whether or not this element matches the given instruction with the given Bindings in effect.int
maxOccur()
Return the maximum number of instructions this PatternElement must match in the ByteCodePattern.int
minOccur()
Return the minimum number of instructions this PatternElement must match in the ByteCodePattern.setAllowTrailingEdges
(boolean allowTrailingEdges) Set whether or not this PatternElement allows trailing edges to be matched.Methods inherited from class edu.umd.cs.findbugs.ba.bcp.PatternElement
addOrCheckDefinition, allowTrailingEdges, dominatedBy, getDominatedBy, getLabel, getNext, lookup, setIndex, setNext, toString
-
Field Details
-
childList
-
-
Constructor Details
-
MatchAny
Constructor.- Parameters:
childList
- list of child PatternElements
-
-
Method Details
-
label
Description copied from class:PatternElement
Set a label for this PatternElement.- Overrides:
label
in classPatternElement
- Parameters:
label
- the label- Returns:
- this object
-
setAllowTrailingEdges
Description copied from class:PatternElement
Set whether or not this PatternElement allows trailing edges to be matched. By default, trailing edges may be matched. When this value is set to false, it ensures that the successor instruction must be in the same basic block.- Overrides:
setAllowTrailingEdges
in classPatternElement
- Parameters:
allowTrailingEdges
- true if trailing edges may be matched, false if trailing edges will never be matched
-
match
public MatchResult match(org.apache.bcel.generic.InstructionHandle handle, org.apache.bcel.generic.ConstantPoolGen cpg, ValueNumberFrame before, ValueNumberFrame after, BindingSet bindingSet) throws DataflowAnalysisException Description copied from class:PatternElement
Return whether or not this element matches the given instruction with the given Bindings in effect.- Specified by:
match
in classPatternElement
- Parameters:
handle
- the instructioncpg
- the ConstantPoolGen from the methodbefore
- the ValueNumberFrame representing values in the Java stack frame just before the execution of the instructionafter
- the ValueNumberFrame representing values in the Java stack frame just after the execution of the instructionbindingSet
- the set of Bindings- Returns:
- if the match is successful, returns a MatchResult with the PatternElement and BindingSet; if the match is not successful, returns null
- Throws:
DataflowAnalysisException
-
acceptBranch
Description copied from class:PatternElement
Return whether or not it is acceptable to take the given branch.- Specified by:
acceptBranch
in classPatternElement
- Parameters:
edge
- the Edge representing the branchsource
- the source instruction of the branch- Returns:
- true if the Edge is acceptable, false if not
-
minOccur
public int minOccur()Description copied from class:PatternElement
Return the minimum number of instructions this PatternElement must match in the ByteCodePattern.- Specified by:
minOccur
in classPatternElement
-
maxOccur
public int maxOccur()Description copied from class:PatternElement
Return the maximum number of instructions this PatternElement must match in the ByteCodePattern.- Specified by:
maxOccur
in classPatternElement
-