Example #1
0
 private PropertySetAnalysisContext(
     AbstractValueDomain <PropertySetAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     PointsToAnalysisResult pointsToAnalysisResult,
     ValueContentAnalysisResult valueContentAnalysisResultOpt,
     Func <PropertySetAnalysisContext, PropertySetAnalysisResult> getOrComputeAnalysisResult,
     ControlFlowGraph parentControlFlowGraphOpt,
     InterproceduralPropertySetAnalysisData interproceduralAnalysisDataOpt,
     string typeToTrackMetadataName,
     ConstructorMapper constructorMapper,
     PropertyMapperCollection propertyMappers,
     HazardousUsageEvaluatorCollection hazardousUsageEvaluators,
     ImmutableDictionary <INamedTypeSymbol, string> hazardousUsageTypesToNames)
     : base(valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol, interproceduralAnalysisConfig, pessimisticAnalysis,
            predicateAnalysis: false, exceptionPathsAnalysis: false, copyAnalysisResultOpt: null, pointsToAnalysisResult,
            getOrComputeAnalysisResult, parentControlFlowGraphOpt, interproceduralAnalysisDataOpt, interproceduralAnalysisPredicateOpt: null)
 {
     this.ValueContentAnalysisResultOpt = valueContentAnalysisResultOpt;
     this.TypeToTrackMetadataName       = typeToTrackMetadataName;
     this.ConstructorMapper             = constructorMapper;
     this.PropertyMappers            = propertyMappers;
     this.HazardousUsageEvaluators   = hazardousUsageEvaluators;
     this.HazardousUsageTypesToNames = hazardousUsageTypesToNames;
 }
 private GlobalFlowStateAnalysisContext(
     AbstractValueDomain <GlobalFlowStateAnalysisValueSet> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     AnalyzerOptions analyzerOptions,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     PointsToAnalysisResult?pointsToAnalysisResult,
     ValueContentAnalysisResult?valueContentAnalysisResult,
     Func <GlobalFlowStateAnalysisContext, GlobalFlowStateAnalysisResult?> tryGetOrComputeAnalysisResult,
     ControlFlowGraph?parentControlFlowGraph,
     InterproceduralGlobalFlowStateAnalysisData?interproceduralAnalysisData,
     InterproceduralAnalysisPredicate?interproceduralAnalysisPredicate)
     : base(valueDomain, wellKnownTypeProvider, controlFlowGraph,
            owningSymbol, analyzerOptions, interproceduralAnalysisConfig, pessimisticAnalysis,
            predicateAnalysis: false,
            exceptionPathsAnalysis: false,
            copyAnalysisResult: null,
            pointsToAnalysisResult,
            valueContentAnalysisResult,
            tryGetOrComputeAnalysisResult,
            parentControlFlowGraph,
            interproceduralAnalysisData,
            interproceduralAnalysisPredicate)
 {
 }
 internal static DisposeAnalysisContext Create(
     AbstractValueDomain <DisposeAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     AnalyzerOptions analyzerOptions,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     InterproceduralAnalysisPredicate?interproceduralAnalysisPredicateOpt,
     bool pessimisticAnalysis,
     bool exceptionPathsAnalysis,
     PointsToAnalysisResult?pointsToAnalysisResultOpt,
     Func <DisposeAnalysisContext, DisposeAnalysisResult?> tryGetOrComputeAnalysisResult,
     ImmutableHashSet <INamedTypeSymbol> disposeOwnershipTransferLikelyTypes,
     bool disposeOwnershipTransferAtConstructor,
     bool disposeOwnershipTransferAtMethodCall,
     bool trackInstanceFields,
     SymbolNamesWithValueOption <Unit> excludedSymbols)
 {
     return(new DisposeAnalysisContext(
                valueDomain, wellKnownTypeProvider, controlFlowGraph,
                owningSymbol, analyzerOptions, interproceduralAnalysisConfig, pessimisticAnalysis,
                exceptionPathsAnalysis, pointsToAnalysisResultOpt, tryGetOrComputeAnalysisResult,
                disposeOwnershipTransferLikelyTypes, disposeOwnershipTransferAtConstructor, disposeOwnershipTransferAtMethodCall,
                trackInstanceFields, parentControlFlowGraphOpt: null, interproceduralAnalysisDataOpt: null,
                interproceduralAnalysisPredicateOpt, excludedSymbols));
 }
        private FlightEnabledAnalysisContext(
            AbstractValueDomain <FlightEnabledAbstractValue> valueDomain,
            WellKnownTypeProvider wellKnownTypeProvider,
            ControlFlowGraph controlFlowGraph,
            ISymbol owningSymbol,
            ImmutableArray <IMethodSymbol> flightEnablingMethods,
            Func <FlightEnabledAnalysisCallbackContext, FlightEnabledAbstractValue> getValueForFlightEnablingMethodInvocation,
            AnalyzerOptions analyzerOptions,
            InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
            bool pessimisticAnalysis,
            PointsToAnalysisResult?pointsToAnalysisResultOpt,
            ValueContentAnalysisResult?valueContentAnalysisResultOpt,
            Func <FlightEnabledAnalysisContext, FlightEnabledAnalysisResult?> tryGetOrComputeAnalysisResult,
            ControlFlowGraph?parentControlFlowGraphOpt,
            InterproceduralFlightEnabledAnalysisData?interproceduralAnalysisDataOpt,
            InterproceduralAnalysisPredicate?interproceduralAnalysisPredicateOpt)
            : base(valueDomain, wellKnownTypeProvider, controlFlowGraph,
                   owningSymbol, analyzerOptions, interproceduralAnalysisConfig, pessimisticAnalysis,
                   predicateAnalysis: false,
                   exceptionPathsAnalysis: false,
                   copyAnalysisResultOpt: null,
                   pointsToAnalysisResultOpt,
                   valueContentAnalysisResultOpt,
                   tryGetOrComputeAnalysisResult,
                   parentControlFlowGraphOpt,
                   interproceduralAnalysisDataOpt,
                   interproceduralAnalysisPredicateOpt)
        {
            RoslynDebug.Assert(!flightEnablingMethods.IsDefaultOrEmpty);

            FlightEnablingMethods = flightEnablingMethods;
            GetValueForFlightEnablingMethodInvocation = getValueForFlightEnablingMethodInvocation;
        }
 public static PropertySetAnalysisContext Create(
     AbstractValueDomain <PropertySetAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     PointsToAnalysisResult pointsToAnalysisResult,
     ValueContentAnalysisResult valueContentAnalysisResultOpt,
     Func <PropertySetAnalysisContext, PropertySetAnalysisResult> getOrComputeAnalysisResult,
     string typeToTrackMetadataName,
     ConstructorMapper constructorMapper,
     PropertyMapperCollection propertyMappers,
     HazardousUsageEvaluatorCollection hazardousUsageEvaluators)
 {
     return(new PropertySetAnalysisContext(
                valueDomain,
                wellKnownTypeProvider,
                controlFlowGraph,
                owningSymbol,
                interproceduralAnalysisConfig,
                pessimisticAnalysis,
                pointsToAnalysisResult,
                valueContentAnalysisResultOpt,
                getOrComputeAnalysisResult,
                parentControlFlowGraphOpt: null,
                interproceduralAnalysisDataOpt: null,
                typeToTrackMetadataName: typeToTrackMetadataName,
                constructorMapper: constructorMapper,
                propertyMappers: propertyMappers,
                hazardousUsageEvaluators: hazardousUsageEvaluators,
                hazardousUsageTypesToNames: hazardousUsageEvaluators.GetTypeToNameMapping(wellKnownTypeProvider)));
 }
Example #6
0
        public static TaintedDataAnalysisContext Create(
            AbstractValueDomain <TaintedDataAbstractValue> valueDomain,
            WellKnownTypeProvider wellKnownTypeProvider,
            ControlFlowGraph controlFlowGraph,
            ISymbol owningSymbol,
            InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
            bool pessimisticAnalysis,
            PointsToAnalysisResult pointsToAnalysisResult,
            Func <TaintedDataAnalysisContext, TaintedDataAnalysisResult> tryGetOrComputeAnalysisResult,
            TaintedDataSymbolMap <SourceInfo> taintedSourceInfos,
            TaintedDataSymbolMap <SanitizerInfo> taintedSanitizerInfos,
            TaintedDataSymbolMap <SinkInfo> taintedSinkInfos)
        {
            Debug.Assert(pointsToAnalysisResult != null);

            return(new TaintedDataAnalysisContext(
                       valueDomain,
                       wellKnownTypeProvider,
                       controlFlowGraph,
                       owningSymbol,
                       interproceduralAnalysisConfig,
                       pessimisticAnalysis,
                       pointsToAnalysisResult,
                       tryGetOrComputeAnalysisResult,
                       parentControlFlowGraph: null,
                       interproceduralAnalysisDataOpt: null,
                       taintedSourceInfos: taintedSourceInfos,
                       taintedSanitizerInfos: taintedSanitizerInfos,
                       taintedSinkInfos: taintedSinkInfos));
        }
        public static ParameterValidationAnalysisContext Create(
            AbstractValueDomain <ParameterValidationAbstractValue> valueDomain,
            WellKnownTypeProvider wellKnownTypeProvider,
            ControlFlowGraph controlFlowGraph,
            ISymbol owningSymbol,
            ImmutableArray <string> nullCheckValidationMethods,
            InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
            bool pessimisticAnalysis,
            PointsToAnalysisResult pointsToAnalysisResultOpt,
            Func <ParameterValidationAnalysisContext, ParameterValidationAnalysisResult> tryGetOrComputeAnalysisResult)
        {
            var nullCheckValidationMethodNames = nullCheckValidationMethods.IsEmpty ?
                                                 ImmutableHashSet <string> .Empty :
                                                 nullCheckValidationMethods.Where(s => !s.Contains("."))
                                                 .ToImmutableHashSet(wellKnownTypeProvider.Compilation.IsCaseSensitive ? StringComparer.Ordinal : StringComparer.OrdinalIgnoreCase);

            var nullCheckValidationMethodSymbols = nullCheckValidationMethods.IsEmpty ?
                                                   ImmutableHashSet <IMethodSymbol> .Empty :
                                                   nullCheckValidationMethods.Where(s => s.Contains("."))
                                                   .Select(s => s.StartsWith("M:", StringComparison.Ordinal) ? s : "M:" + s)
                                                   .SelectMany(s => DocumentationCommentId.GetSymbolsForDeclarationId(s, wellKnownTypeProvider.Compilation))
                                                   .OfType <IMethodSymbol>()
                                                   .WhereNotNull()
                                                   .ToImmutableHashSet();

            return(new ParameterValidationAnalysisContext(
                       valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol,
                       nullCheckValidationMethodNames, nullCheckValidationMethodSymbols, interproceduralAnalysisConfig,
                       pessimisticAnalysis, pointsToAnalysisResultOpt, tryGetOrComputeAnalysisResult, parentControlFlowGraphOpt: null,
                       interproceduralAnalysisDataOpt: null, trackHazardousParameterUsages: false));
        }
 private DisposeAnalysisContext(
     AbstractValueDomain <DisposeAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     bool exceptionPathsAnalysis,
     PointsToAnalysisResult pointsToAnalysisResultOpt,
     Func <DisposeAnalysisContext, DisposeAnalysisResult> tryGetOrComputeAnalysisResult,
     ImmutableHashSet <INamedTypeSymbol> disposeOwnershipTransferLikelyTypes,
     bool disposeOwnershipTransferAtConstructor,
     bool disposeOwnershipTransferAtMethodCall,
     bool trackInstanceFields,
     ControlFlowGraph parentControlFlowGraphOpt,
     InterproceduralDisposeAnalysisData interproceduralAnalysisDataOpt,
     InterproceduralAnalysisPredicate interproceduralAnalysisPredicateOpt)
     : base(valueDomain, wellKnownTypeProvider, controlFlowGraph,
            owningSymbol, interproceduralAnalysisConfig, pessimisticAnalysis,
            predicateAnalysis: false,
            exceptionPathsAnalysis,
            copyAnalysisResultOpt: null,
            pointsToAnalysisResultOpt,
            valueContentAnalysisResultOpt: null,
            tryGetOrComputeAnalysisResult,
            parentControlFlowGraphOpt,
            interproceduralAnalysisDataOpt,
            interproceduralAnalysisPredicateOpt)
 {
     DisposeOwnershipTransferLikelyTypes   = disposeOwnershipTransferLikelyTypes;
     DisposeOwnershipTransferAtConstructor = disposeOwnershipTransferAtConstructor;
     DisposeOwnershipTransferAtMethodCall  = disposeOwnershipTransferAtMethodCall;
     TrackInstanceFields = trackInstanceFields;
 }
Example #9
0
 public static ParameterValidationAnalysisContext Create(
     AbstractValueDomain <ParameterValidationAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     PointsToAnalysisResult pointsToAnalysisResultOpt,
     Func <ParameterValidationAnalysisContext, ParameterValidationAnalysisResult> getOrComputeAnalysisResult)
 {
     return(new ParameterValidationAnalysisContext(
                valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol, interproceduralAnalysisConfig,
                pessimisticAnalysis, pointsToAnalysisResultOpt, getOrComputeAnalysisResult, parentControlFlowGraphOpt: null,
                interproceduralAnalysisDataOpt: null, trackHazardousParameterUsages: false));
 }
Example #10
0
 internal static PointsToAnalysisContext Create(
     AbstractValueDomain <PointsToAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     bool exceptionPathsAnalysis,
     CopyAnalysisResult copyAnalysisResultOpt,
     Func <PointsToAnalysisContext, PointsToAnalysisResult> getOrComputeAnalysisResult,
     InterproceduralAnalysisPredicate interproceduralAnalysisPredicateOpt)
 {
     return(new PointsToAnalysisContext(valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol, interproceduralAnalysisConfig,
                                        pessimisticAnalysis, exceptionPathsAnalysis, copyAnalysisResultOpt, getOrComputeAnalysisResult, parentControlFlowGraphOpt: null,
                                        interproceduralAnalysisDataOpt: null, interproceduralAnalysisPredicateOpt));
 }
 internal static CopyAnalysisContext Create(
     AbstractValueDomain <CopyAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     AnalyzerOptions analyzerOptions,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     bool exceptionPathsAnalysis,
     PointsToAnalysisResult?pointsToAnalysisResult,
     Func <CopyAnalysisContext, CopyAnalysisResult?> tryGetOrComputeAnalysisResult,
     InterproceduralAnalysisPredicate?interproceduralAnalysisPredicate)
 {
     return(new CopyAnalysisContext(valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol, analyzerOptions,
                                    interproceduralAnalysisConfig, pessimisticAnalysis, exceptionPathsAnalysis, pointsToAnalysisResult, tryGetOrComputeAnalysisResult,
                                    parentControlFlowGraph: null, interproceduralAnalysisData: null, interproceduralAnalysisPredicate));
 }
 public static ParameterValidationAnalysisContext Create(
     AbstractValueDomain <ParameterValidationAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     AnalyzerOptions analyzerOptions,
     SymbolNamesWithValueOption <Unit> nullCheckValidationMethods,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     PointsToAnalysisResult?pointsToAnalysisResult,
     Func <ParameterValidationAnalysisContext, ParameterValidationAnalysisResult?> tryGetOrComputeAnalysisResult)
 {
     return(new ParameterValidationAnalysisContext(
                valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol,
                analyzerOptions, nullCheckValidationMethods, interproceduralAnalysisConfig,
                pessimisticAnalysis, pointsToAnalysisResult, tryGetOrComputeAnalysisResult, parentControlFlowGraph: null,
                interproceduralAnalysisData: null, trackHazardousParameterUsages: false));
 }
 private PropertySetAnalysisContext(
     AbstractValueDomain <PropertySetAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     AnalyzerOptions analyzerOptions,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     PointsToAnalysisResult pointsToAnalysisResult,
     ValueContentAnalysisResult valueContentAnalysisResultOpt,
     Func <PropertySetAnalysisContext, PropertySetAnalysisResult> tryGetOrComputeAnalysisResult,
     ControlFlowGraph parentControlFlowGraphOpt,
     InterproceduralPropertySetAnalysisData interproceduralAnalysisDataOpt,
     ImmutableHashSet <string> typeToTrackMetadataNames,
     ConstructorMapper constructorMapper,
     PropertyMapperCollection propertyMappers,
     HazardousUsageEvaluatorCollection hazardousUsageEvaluators,
     ImmutableDictionary <(INamedTypeSymbol, bool), string> hazardousUsageTypesToNames)
Example #14
0
 private PointsToAnalysisContext(
     AbstractValueDomain <PointsToAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     bool exceptionPathsAnalysis,
     CopyAnalysisResult copyAnalysisResultOpt,
     Func <PointsToAnalysisContext, PointsToAnalysisResult> getOrComputeAnalysisResult,
     ControlFlowGraph parentControlFlowGraphOpt,
     InterproceduralPointsToAnalysisData interproceduralAnalysisDataOpt,
     InterproceduralAnalysisPredicate interproceduralAnalysisPredicateOpt)
     : base(valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol, interproceduralAnalysisConfig, pessimisticAnalysis,
            predicateAnalysis: true, exceptionPathsAnalysis, copyAnalysisResultOpt, pointsToAnalysisResultOpt: null,
            getOrComputeAnalysisResult, parentControlFlowGraphOpt, interproceduralAnalysisDataOpt, interproceduralAnalysisPredicateOpt)
 {
 }
Example #15
0
 internal static ValueContentAnalysisContext Create(
     AbstractValueDomain <ValueContentAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     AnalyzerOptions analyzerOptions,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     CopyAnalysisResult copyAnalysisResultOpt,
     PointsToAnalysisResult pointsToAnalysisResultOpt,
     Func <ValueContentAnalysisContext, ValueContentAnalysisResult> tryGetOrComputeAnalysisResult,
     InterproceduralAnalysisPredicate interproceduralAnalysisPredicateOpt)
 {
     return(new ValueContentAnalysisContext(
                valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol, analyzerOptions,
                interproceduralAnalysisConfig, pessimisticAnalysis, copyAnalysisResultOpt, pointsToAnalysisResultOpt,
                tryGetOrComputeAnalysisResult, parentControlFlowGraphOpt: null, interproceduralAnalysisDataOpt: null, interproceduralAnalysisPredicateOpt));
 }
 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;
 }
Example #17
0
 private CopyAnalysisContext(
     AbstractValueDomain <CopyAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     AnalyzerOptions analyzerOptions,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     bool exceptionPathsAnalysis,
     PointsToAnalysisResult?pointsToAnalysisResultOpt,
     Func <CopyAnalysisContext, CopyAnalysisResult?> tryGetOrComputeAnalysisResult,
     ControlFlowGraph?parentControlFlowGraphOpt,
     InterproceduralCopyAnalysisData?interproceduralAnalysisDataOpt,
     InterproceduralAnalysisPredicate?interproceduralAnalysisPredicateOpt)
     : base(valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol, analyzerOptions, interproceduralAnalysisConfig, pessimisticAnalysis,
            predicateAnalysis: true, exceptionPathsAnalysis, copyAnalysisResultOpt: null, pointsToAnalysisResultOpt, valueContentAnalysisResultOpt: null,
            tryGetOrComputeAnalysisResult, parentControlFlowGraphOpt, interproceduralAnalysisDataOpt, interproceduralAnalysisPredicateOpt)
 {
 }
 public GlobalFlowStateDictionaryAnalysisContext(
     AbstractValueDomain <GlobalFlowStateDictionaryAnalysisValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     AnalyzerOptions analyzerOptions,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     bool predicateAnalysis,
     bool exceptionPathsAnalysis,
     DataFlowAnalysisResult <CopyBlockAnalysisResult, CopyAbstractValue>?copyAnalysisResult,
     PointsToAnalysisResult?pointsToAnalysisResult,
     DataFlowAnalysisResult <ValueContentBlockAnalysisResult, ValueContentAbstractValue>?valueContentAnalysisResult,
     Func <GlobalFlowStateDictionaryAnalysisContext, GlobalFlowStateDictionaryAnalysisResult?> tryGetOrComputeAnalysisResult,
     ControlFlowGraph?parentControlFlowGraph = null,
     InterproceduralAnalysisData <GlobalFlowStateDictionaryAnalysisData, GlobalFlowStateDictionaryAnalysisContext, GlobalFlowStateDictionaryAnalysisValue>?interproceduralAnalysisData = null,
     InterproceduralAnalysisPredicate?interproceduralAnalysisPredicate = null) : base(valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol, analyzerOptions, interproceduralAnalysisConfig, pessimisticAnalysis, predicateAnalysis, exceptionPathsAnalysis, copyAnalysisResult, pointsToAnalysisResult, valueContentAnalysisResult, tryGetOrComputeAnalysisResult, parentControlFlowGraph, interproceduralAnalysisData, interproceduralAnalysisPredicate)
 {
 }
Example #19
0
        private TaintedDataAnalysisContext(
            AbstractValueDomain <TaintedDataAbstractValue> valueDomain,
            WellKnownTypeProvider wellKnownTypeProvider,
            ControlFlowGraph controlFlowGraph,
            ISymbol owningSymbol,
            AnalyzerOptions analyzerOptions,
            InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
            bool pessimisticAnalysis,
            CopyAnalysisResult copyAnalysisResultOpt,
            PointsToAnalysisResult pointsToAnalysisResult,
            ValueContentAnalysisResult valueContentAnalysisResult,
            Func <TaintedDataAnalysisContext, TaintedDataAnalysisResult> tryGetOrComputeAnalysisResult,
            ControlFlowGraph parentControlFlowGraph,
            InterproceduralTaintedDataAnalysisData interproceduralAnalysisDataOpt,
            TaintedDataSymbolMap <SourceInfo> taintedSourceInfos,
            TaintedDataSymbolMap <SanitizerInfo> taintedSanitizerInfos,
            TaintedDataSymbolMap <SinkInfo> taintedSinkInfos)
            : base(
                valueDomain,
                wellKnownTypeProvider,
                controlFlowGraph,
                owningSymbol,
                analyzerOptions,
                interproceduralAnalysisConfig,
                pessimisticAnalysis,
                predicateAnalysis: false,
                exceptionPathsAnalysis: false,
                copyAnalysisResultOpt,
                pointsToAnalysisResult,
                valueContentAnalysisResult,
                tryGetOrComputeAnalysisResult,
                parentControlFlowGraph,
                interproceduralAnalysisDataOpt,
                interproceduralAnalysisPredicateOpt: null)
        {
            Debug.Assert(pointsToAnalysisResult != null);

            this.SourceInfos    = taintedSourceInfos ?? throw new ArgumentNullException(nameof(taintedSourceInfos));
            this.SanitizerInfos = taintedSanitizerInfos ?? throw new ArgumentNullException(nameof(taintedSanitizerInfos));
            this.SinkInfos      = taintedSinkInfos ?? throw new ArgumentNullException(nameof(taintedSinkInfos));
        }
 internal static ValueContentAnalysisContext Create(
     AbstractValueDomain <ValueContentAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     AnalyzerOptions analyzerOptions,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     CopyAnalysisResult?copyAnalysisResult,
     PointsToAnalysisResult?pointsToAnalysisResult,
     Func <ValueContentAnalysisContext, ValueContentAnalysisResult?> tryGetOrComputeAnalysisResult,
     ImmutableArray <INamedTypeSymbol> additionalSupportedValueTypes,
     Func <IOperation, ValueContentAbstractValue>?getValueContentValueForAdditionalSupportedValueTypeOperation,
     InterproceduralAnalysisPredicate?interproceduralAnalysisPredicate)
 {
     return(new ValueContentAnalysisContext(
                valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol, analyzerOptions,
                interproceduralAnalysisConfig, pessimisticAnalysis, copyAnalysisResult, pointsToAnalysisResult,
                tryGetOrComputeAnalysisResult, additionalSupportedValueTypes, getValueContentValueForAdditionalSupportedValueTypeOperation,
                parentControlFlowGraph: null, interproceduralAnalysisData: null, interproceduralAnalysisPredicate));
 }
 internal static FlightEnabledAnalysisContext Create(
     AbstractValueDomain <FlightEnabledAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     ImmutableArray <IMethodSymbol> flightEnablingMethods,
     Func <FlightEnabledAnalysisCallbackContext, FlightEnabledAbstractValue> getValueForFlightEnablingMethodInvocation,
     AnalyzerOptions analyzerOptions,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     PointsToAnalysisResult?pointsToAnalysisResultOpt,
     ValueContentAnalysisResult?valueContentAnalysisResult,
     Func <FlightEnabledAnalysisContext, FlightEnabledAnalysisResult?> tryGetOrComputeAnalysisResult,
     InterproceduralAnalysisPredicate?interproceduralAnalysisPredicateOpt)
 {
     return(new FlightEnabledAnalysisContext(
                valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol,
                flightEnablingMethods, getValueForFlightEnablingMethodInvocation, analyzerOptions,
                interproceduralAnalysisConfig, pessimisticAnalysis, pointsToAnalysisResultOpt,
                valueContentAnalysisResult, tryGetOrComputeAnalysisResult, parentControlFlowGraphOpt: null,
                interproceduralAnalysisDataOpt: null, interproceduralAnalysisPredicateOpt));
 }
Example #22
0
        private PointsToAnalysisContext(
            AbstractValueDomain <PointsToAbstractValue> valueDomain,
            WellKnownTypeProvider wellKnownTypeProvider,
            ControlFlowGraph controlFlowGraph,
            ISymbol owningSymbol,
            AnalyzerOptions analyzerOptions,
            PointsToAnalysisKind pointsToAnalysisKind,
            InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
            bool pessimisticAnalysis,
            bool exceptionPathsAnalysis,
            CopyAnalysisResult?copyAnalysisResult,
            Func <PointsToAnalysisContext, PointsToAnalysisResult?> tryGetOrComputeAnalysisResult,
            ControlFlowGraph?parentControlFlowGraph,
            InterproceduralPointsToAnalysisData?interproceduralAnalysisData,
            InterproceduralAnalysisPredicate?interproceduralAnalysisPredicate)
            : base(valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol, analyzerOptions, interproceduralAnalysisConfig, pessimisticAnalysis,
                   predicateAnalysis: true, exceptionPathsAnalysis, copyAnalysisResult, pointsToAnalysisResult: null, valueContentAnalysisResult: null,
                   tryGetOrComputeAnalysisResult, parentControlFlowGraph, interproceduralAnalysisData, interproceduralAnalysisPredicate)
        {
            Debug.Assert(pointsToAnalysisKind != PointsToAnalysisKind.None);

            PointsToAnalysisKind = pointsToAnalysisKind;
        }
 private ParameterValidationAnalysisContext(
     AbstractValueDomain <ParameterValidationAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     AnalyzerOptions analyzerOptions,
     SymbolNamesWithValueOption <Unit> nullCheckValidationMethods,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     PointsToAnalysisResult?pointsToAnalysisResult,
     Func <ParameterValidationAnalysisContext, ParameterValidationAnalysisResult?> tryGetOrComputeAnalysisResult,
     ControlFlowGraph?parentControlFlowGraph,
     InterproceduralParameterValidationAnalysisData?interproceduralAnalysisData,
     bool trackHazardousParameterUsages)
     : base(valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol, analyzerOptions, interproceduralAnalysisConfig,
            pessimisticAnalysis, predicateAnalysis: false, exceptionPathsAnalysis: false,
            copyAnalysisResult: null, pointsToAnalysisResult, valueContentAnalysisResult: null,
            tryGetOrComputeAnalysisResult, parentControlFlowGraph, interproceduralAnalysisData,
            interproceduralAnalysisPredicate: null)
 {
     TrackHazardousParameterUsages  = trackHazardousParameterUsages;
     NullCheckValidationMethodNames = nullCheckValidationMethods;
 }
 private ValueContentAnalysisContext(
     AbstractValueDomain <ValueContentAbstractValue> valueDomain,
     WellKnownTypeProvider wellKnownTypeProvider,
     ControlFlowGraph controlFlowGraph,
     ISymbol owningSymbol,
     AnalyzerOptions analyzerOptions,
     InterproceduralAnalysisConfiguration interproceduralAnalysisConfig,
     bool pessimisticAnalysis,
     CopyAnalysisResult?copyAnalysisResult,
     PointsToAnalysisResult?pointsToAnalysisResult,
     Func <ValueContentAnalysisContext, ValueContentAnalysisResult?> tryGetOrComputeAnalysisResult,
     ImmutableArray <INamedTypeSymbol> additionalSupportedValueTypes,
     Func <IOperation, ValueContentAbstractValue>?getValueForAdditionalSupportedValueTypeOperation,
     ControlFlowGraph?parentControlFlowGraph,
     InterproceduralValueContentAnalysisData?interproceduralAnalysisData,
     InterproceduralAnalysisPredicate?interproceduralAnalysisPredicate)
     : base(valueDomain, wellKnownTypeProvider, controlFlowGraph, owningSymbol, analyzerOptions, interproceduralAnalysisConfig,
            pessimisticAnalysis, predicateAnalysis: true, exceptionPathsAnalysis: false, copyAnalysisResult,
            pointsToAnalysisResult, valueContentAnalysisResult: null, tryGetOrComputeAnalysisResult, parentControlFlowGraph,
            interproceduralAnalysisData, interproceduralAnalysisPredicate)
 {
     AdditionalSupportedValueTypes = additionalSupportedValueTypes.IsDefault ? ImmutableArray <INamedTypeSymbol> .Empty : additionalSupportedValueTypes;
     GetValueForAdditionalSupportedValueTypeOperation = getValueForAdditionalSupportedValueTypeOperation;
 }
Example #25
0
 public CorePointsToAnalysisDataDomain(DefaultPointsToValueGenerator defaultPointsToValueGenerator, AbstractValueDomain <PointsToAbstractValue> valueDomain)
     : base(valueDomain, defaultPointsToValueGenerator.IsTrackedEntity, defaultPointsToValueGenerator.IsTrackedPointsToValue)
 {
     DefaultPointsToValueGenerator = defaultPointsToValueGenerator;
 }
 public CoreCopyAnalysisDataDomain(AbstractValueDomain <CopyAbstractValue> valueDomain, Func <AnalysisEntity, CopyAbstractValue> getDefaultCopyValue)
     : base(valueDomain)
 {
     _getDefaultCopyValue = getDefaultCopyValue;
 }
 public PointsToAnalysisDomain(DefaultPointsToValueGenerator defaultPointsToValueGenerator, AbstractValueDomain <PointsToAbstractValue> valueDomain)
     : base(valueDomain)
 {
     DefaultPointsToValueGenerator = defaultPointsToValueGenerator;
 }
Example #28
0
 private CopyAnalysisDomain(AbstractValueDomain <CopyAbstractValue> valueDomain)
     : base(valueDomain)
 {
 }
Example #29
0
 public CoreAnalysisDataDomain(AbstractValueDomain <ValueContentAbstractValue> valueDomain, PointsToAnalysisResult?pointsToAnalysisResult)
     : base(valueDomain, pointsToAnalysisResult)
 {
 }
 private CoreAnalysisDataDomain(AbstractValueDomain <ValueContentAbstractValue> valueDomain) : base(valueDomain)
 {
 }