Beispiel #1
0
        private bool IsInterestingCall(Method m)
        {
            bool res        = true;
            bool isInModule = methodsFinder != null?methodsFinder.IsInCurrenModule(m) : currentPTWE.IsInCurrenModule(m);

            res = res && isInModule;
            res = res && !m.Name.Name.Equals("set_Item");
            res = res && !m.Name.Name.Equals("get_Item");
            res = res && (m.DeclaringType != null & !m.DeclaringType.FullName.StartsWith("Microsoft.Contracts"));
            Method templateOrMethod = WeakPurityAndWriteEffectsAnalysis.solveMethodTemplate(m);

            res = res && currentPTWE.IsPossibleAnalyzableMethod(templateOrMethod);
            return(res);
        }
Beispiel #2
0
        internal bool IsInterestingCall(Method m)
        {
            bool res = true;

            // DIEGO-CHECK: Why did I remove this..
            //res = res && this.ptwe.IsInCurrenModule(m);

            res = res && this.IsInCurrenModule(m);
            res = res && !m.Name.Name.Equals("set_Item");
            res = res && !m.Name.Name.Equals("get_Item");
            res = res && (m.DeclaringType != null & !m.DeclaringType.FullName.StartsWith("Microsoft.Contracts"));
            Method templateOrMethod = WeakPurityAndWriteEffectsAnalysis.solveMethodTemplate(m);

            res = res && this.ptwe.IsPossibleAnalyzableMethod(templateOrMethod);
            return(res);
        }
Beispiel #3
0
        public void AddCall(Method m1, Method m2, Label lb, bool isV)
        {
            CGNode m1n = new CGNode(m1);
            CGNode m2n = new CGNode(m2);

            AddNode(m1n);
            AddNode(m2n);
            calls.AddEdge(m1n, m2n, lb, isV);
            Method template = WeakPurityAndWriteEffectsAnalysis.solveMethodTemplate(m2);

            if (!template.Equals(m2))
            {
                CGNode m2T = new CGNode(template);
                AddNode(m2T);
                calls.AddEdge(m1n, m2T, lb, isV);
            }
        }
        /// <summary>
        /// A reference to the Main Analysis class
        /// To get information about other methods under analysis
        /// </summary>
        //internal WeakPurityAndWriteEffectsAnalysis pointsToWEAnalysis;

        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="t"></param>
        /// <param name="pta"></param>
        public PointsToAndWriteEffectsInferer(TypeSystem t, WeakPurityAndWriteEffectsAnalysis pta)
            : base(t,pta)
        {
        }