Class ValueRangeAnalysisFactory
- java.lang.Object
-
- edu.umd.cs.findbugs.classfile.engine.bcel.ValueRangeAnalysisFactory
-
- All Implemented Interfaces:
IAnalysisEngine<MethodDescriptor,ValueRangeAnalysisFactory.ValueRangeAnalysis>
,IMethodAnalysisEngine<ValueRangeAnalysisFactory.ValueRangeAnalysis>
public class ValueRangeAnalysisFactory extends java.lang.Object implements IMethodAnalysisEngine<ValueRangeAnalysisFactory.ValueRangeAnalysis>
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static class
ValueRangeAnalysisFactory.BackIterator
private static class
ValueRangeAnalysisFactory.Branch
private static class
ValueRangeAnalysisFactory.Condition
private static class
ValueRangeAnalysisFactory.Context
static class
ValueRangeAnalysisFactory.LongRangeSet
static class
ValueRangeAnalysisFactory.RedundantCondition
private static class
ValueRangeAnalysisFactory.TypeLongRange
private static class
ValueRangeAnalysisFactory.Value
static class
ValueRangeAnalysisFactory.ValueRangeAnalysis
private static class
ValueRangeAnalysisFactory.VariableData
-
Field Summary
Fields Modifier and Type Field Description private static java.util.Map<java.lang.String,ValueRangeAnalysisFactory.TypeLongRange>
typeRanges
-
Constructor Summary
Constructors Constructor Description ValueRangeAnalysisFactory()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description ValueRangeAnalysisFactory.ValueRangeAnalysis
analyze(IAnalysisCache analysisCache, MethodDescriptor descriptor)
Perform an analysis on class or method named by given descriptor.private static java.lang.String
convertNumber(long val)
private static java.lang.String
convertNumber(java.lang.String signature, java.lang.Number number)
private int
findEndOfAssertBlock(org.apache.bcel.generic.InstructionHandle ih)
Expecting an assert block to look like this:6 getstatic ghIssues.Issue608.$assertionsDisabled : boolean [7]
9 ifne 0
12 iload_1 [i] // Loading some variable named "i"
13 bipush 12 // Loading a constant 12
15 if_icmplt 0 // Comparing i and 12
18 new java.lang.AssertionError [13]
21 dup
22 ldc[15]
24 invokespecial java.lang.AssertionError(java.lang.Object) [17]
27 athrow
private static Location
getLocation(BasicBlock block)
private static java.util.Map<java.lang.Integer,ValueRangeAnalysisFactory.Value>
getParameterTypes(MethodDescriptor descriptor)
void
registerWith(IAnalysisCache analysisCache)
Register the analysis engine with given analysis cache.private static void
walkCFG(CFG cfg, ValueRangeAnalysisFactory.LongRangeSet subRange, java.util.Map<Edge,ValueRangeAnalysisFactory.Branch> edges, java.util.BitSet reachedBlocks)
-
-
-
Field Detail
-
typeRanges
private static final java.util.Map<java.lang.String,ValueRangeAnalysisFactory.TypeLongRange> typeRanges
-
-
Method Detail
-
analyze
public ValueRangeAnalysisFactory.ValueRangeAnalysis analyze(IAnalysisCache analysisCache, MethodDescriptor descriptor) throws CheckedAnalysisException
Description copied from interface:IAnalysisEngine
Perform an analysis on class or method named by given descriptor.- Specified by:
analyze
in interfaceIAnalysisEngine<MethodDescriptor,ValueRangeAnalysisFactory.ValueRangeAnalysis>
- Parameters:
analysisCache
- the analysis cachedescriptor
- the descriptor of the class or method to be analyzed- Returns:
- the result of the analysis of the class or method
- Throws:
CheckedAnalysisException
-
findEndOfAssertBlock
private int findEndOfAssertBlock(org.apache.bcel.generic.InstructionHandle ih)
Expecting an assert block to look like this:6 getstatic ghIssues.Issue608.$assertionsDisabled : boolean [7]
9 ifne 0
12 iload_1 [i] // Loading some variable named "i"
13 bipush 12 // Loading a constant 12
15 if_icmplt 0 // Comparing i and 12
18 new java.lang.AssertionError [13]
21 dup
22 ldc[15]
24 invokespecial java.lang.AssertionError(java.lang.Object) [17]
27 athrow
- Parameters:
ih
- The InstructionHandle corresponding to theifne 0
in the above sample- Returns:
- The position for the final
athrow
-
getLocation
private static Location getLocation(BasicBlock block)
-
convertNumber
private static java.lang.String convertNumber(java.lang.String signature, java.lang.Number number)
-
convertNumber
private static java.lang.String convertNumber(long val)
-
getParameterTypes
private static java.util.Map<java.lang.Integer,ValueRangeAnalysisFactory.Value> getParameterTypes(MethodDescriptor descriptor)
-
walkCFG
private static void walkCFG(CFG cfg, ValueRangeAnalysisFactory.LongRangeSet subRange, java.util.Map<Edge,ValueRangeAnalysisFactory.Branch> edges, java.util.BitSet reachedBlocks)
-
registerWith
public void registerWith(IAnalysisCache analysisCache)
Description copied from interface:IAnalysisEngine
Register the analysis engine with given analysis cache.- Specified by:
registerWith
in interfaceIAnalysisEngine<MethodDescriptor,ValueRangeAnalysisFactory.ValueRangeAnalysis>
- Parameters:
analysisCache
- the analysis cache
-
-