public PointsToDataFlowOperationVisitor(
     DefaultPointsToValueGenerator defaultPointsToValueGenerator,
     PointsToAnalysisDomain pointsToAnalysisDomain,
     PointsToAbstractValueDomain valueDomain,
     ISymbol owningSymbol,
     WellKnownTypeProvider wellKnownTypeProvider,
     bool pessimisticAnalysis,
     DataFlowAnalysisResult <NullAnalysis.NullBlockAnalysisResult, NullAnalysis.NullAbstractValue> nullAnalysisResultOpt)
     : base(valueDomain, owningSymbol, wellKnownTypeProvider, pessimisticAnalysis, predicateAnalysis: false, nullAnalysisResultOpt: nullAnalysisResultOpt, copyAnalysisResultOpt: null, pointsToAnalysisResultOpt: null)
 {
     _defaultPointsToValueGenerator = defaultPointsToValueGenerator;
     _pointsToAnalysisDomain        = pointsToAnalysisDomain;
 }
Example #2
0
        public static DataFlowAnalysisResult <PointsToBlockAnalysisResult, PointsToAbstractValue> GetOrComputeResult(
            ControlFlowGraph cfg,
            ISymbol owningSymbol,
            WellKnownTypeProvider wellKnownTypeProvider,
            DataFlowAnalysisResult <NullAnalysis.NullBlockAnalysisResult, NullAnalysis.NullAbstractValue> nullAnalysisResultOpt = null,
            bool pessimisticAnalysis = true)
        {
            var defaultPointsToValueGenerator = new DefaultPointsToValueGenerator();
            var analysisDomain   = new PointsToAnalysisDomain(defaultPointsToValueGenerator, PointsToAbstractValueDomainInstance);
            var operationVisitor = new PointsToDataFlowOperationVisitor(analysisDomain.DefaultPointsToValueGenerator, analysisDomain,
                                                                        PointsToAbstractValueDomain.Default, owningSymbol, wellKnownTypeProvider, pessimisticAnalysis, nullAnalysisResultOpt);
            var pointsToAnalysis = new PointsToAnalysis(analysisDomain, operationVisitor);

            return(pointsToAnalysis.GetOrComputeResultCore(cfg, cacheResult: true));
        }
 public PointsToAnalysisDomain(DefaultPointsToValueGenerator defaultPointsToValueGenerator, AbstractValueDomain <PointsToAbstractValue> valueDomain)
     : base(valueDomain)
 {
     DefaultPointsToValueGenerator = defaultPointsToValueGenerator;
 }