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 classValueRangeAnalysisFactory.BackIteratorprivate static classValueRangeAnalysisFactory.Branchprivate static classValueRangeAnalysisFactory.Conditionprivate static classValueRangeAnalysisFactory.Contextstatic classValueRangeAnalysisFactory.LongRangeSetstatic classValueRangeAnalysisFactory.RedundantConditionprivate static classValueRangeAnalysisFactory.TypeLongRangeprivate static classValueRangeAnalysisFactory.Valuestatic classValueRangeAnalysisFactory.ValueRangeAnalysisprivate static classValueRangeAnalysisFactory.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.ValueRangeAnalysisanalyze(IAnalysisCache analysisCache, MethodDescriptor descriptor)Perform an analysis on class or method named by given descriptor.private static java.lang.StringconvertNumber(long val)private static java.lang.StringconvertNumber(java.lang.String signature, java.lang.Number number)private intfindEndOfAssertBlock(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 LocationgetLocation(BasicBlock block)private static java.util.Map<java.lang.Integer,ValueRangeAnalysisFactory.Value>getParameterTypes(MethodDescriptor descriptor)voidregisterWith(IAnalysisCache analysisCache)Register the analysis engine with given analysis cache.private static voidwalkCFG(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:IAnalysisEnginePerform an analysis on class or method named by given descriptor.- Specified by:
analyzein 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 0in 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:IAnalysisEngineRegister the analysis engine with given analysis cache.- Specified by:
registerWithin interfaceIAnalysisEngine<MethodDescriptor,ValueRangeAnalysisFactory.ValueRangeAnalysis>- Parameters:
analysisCache- the analysis cache
-
-