public override ParameterValidationAnalysisContext ForkForInterproceduralAnalysis( IMethodSymbol invokedMethod, ControlFlowGraph invokedCfg, IOperation operation, PointsToAnalysisResult pointsToAnalysisResultOpt, CopyAnalysisResult copyAnalysisResultOpt, InterproceduralParameterValidationAnalysisData interproceduralAnalysisData) { Debug.Assert(pointsToAnalysisResultOpt != null); Debug.Assert(copyAnalysisResultOpt == null); // Do not invoke any interprocedural analysis more than one level down. // We only care about analyzing validation methods. return(new ParameterValidationAnalysisContext( ValueDomain, WellKnownTypeProvider, invokedCfg, invokedMethod, InterproceduralAnalysisConfiguration, PessimisticAnalysis, pointsToAnalysisResultOpt, GetOrComputeAnalysisResult, ControlFlowGraph, interproceduralAnalysisData, TrackHazardousParameterUsages)); }
private ParameterValidationAnalysisContext( AbstractValueDomain <ParameterValidationAbstractValue> valueDomain, WellKnownTypeProvider wellKnownTypeProvider, ControlFlowGraph controlFlowGraph, ISymbol owningSymbol, InterproceduralAnalysisConfiguration interproceduralAnalysisConfig, bool pessimisticAnalysis, PointsToAnalysisResult pointsToAnalysisResultOpt, Func <ParameterValidationAnalysisContext, ParameterValidationAnalysisResult> getOrComputeAnalysisResult, ControlFlowGraph parentControlFlowGraphOpt, InterproceduralParameterValidationAnalysisData interproceduralAnalysisDataOpt, bool trackHazardousParameterUsages) : base(valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol, interproceduralAnalysisConfig, pessimisticAnalysis, predicateAnalysis: false, exceptionPathsAnalysis: false, copyAnalysisResultOpt: null, pointsToAnalysisResultOpt, getOrComputeAnalysisResult, parentControlFlowGraphOpt, interproceduralAnalysisDataOpt, interproceduralAnalysisPredicateOpt: null) { TrackHazardousParameterUsages = trackHazardousParameterUsages; }