Beispiel #1
0
 internal static void AssertValidPointsToAnalysisKeyValuePair(
     AnalysisEntity key,
     PointsToAbstractValue value)
 {
     Debug.Assert(value.Kind != PointsToAbstractValueKind.Undefined);
     Debug.Assert(!key.IsLValueFlowCaptureEntity || value.Kind == PointsToAbstractValueKind.KnownLValueCaptures);
     Debug.Assert(PointsToAnalysis.ShouldBeTracked(key, PointsToAnalysisKind.Complete));
 }
        private static PointsToAnalysisResult?TryGetOrComputeResultForAnalysisContext(PointsToAnalysisContext analysisContext)
        {
            using var trackedEntitiesBuilder = new TrackedEntitiesBuilder();
            var defaultPointsToValueGenerator = new DefaultPointsToValueGenerator(trackedEntitiesBuilder);
            var analysisDomain   = new PointsToAnalysisDomain(defaultPointsToValueGenerator);
            var operationVisitor = new PointsToDataFlowOperationVisitor(trackedEntitiesBuilder, defaultPointsToValueGenerator, analysisDomain, analysisContext);
            var pointsToAnalysis = new PointsToAnalysis(analysisDomain, operationVisitor);

            return(pointsToAnalysis.TryGetOrComputeResultCore(analysisContext, cacheResult: true));
        }