PHPAnalysis.Analysis.CFG.VariableResolver.ResolveVariable C# (CSharp) Метод

ResolveVariable() публичный Метод

public ResolveVariable ( XmlNode node ) : VariableResolveResult
node System.Xml.XmlNode
Результат VariableResolveResult
        public VariableResolveResult ResolveVariable(XmlNode node)
        {
            Preconditions.IsTrue(ResolvableNodes.Contains(node.Name), "Cannot resolve variable of " + node.Name, "node");

            return GetVariable(node);

            // Case1: Standard var
            // Case2: ArrayType of some kind
            // Case3: Lokal vs Global vars
        }

Usage Example

Пример #1
0
        public void ResolveArrayElement(string phpCode, string varName)
        {
            XmlNode ast = PHPParseUtils.ParsePHPCode(phpCode, Config.PHPSettings.PHPParserPath).FirstChild.NextSibling;

            var xmlNodes = ast.FirstChild.Cast<XmlNode>().ToList();
            var varNodes = xmlNodes.Where(node => node.LocalName == AstConstants.Nodes.Expr_ArrayDimFetch);

            var varResolver = new VariableResolver(new VariableStorage(), AnalysisScope.File);

            foreach (var varNode in varNodes)
            {
                var result = varResolver.ResolveVariable(varNode);
                Assert.AreEqual(varName, result.Variable.Name, "Names should match");
                Assert.IsTrue(result.IsNew, "Variable should be new");
                result = varResolver.ResolveVariable(varNode);
                Assert.AreEqual(varName, result.Variable.Name, "Names should still match");
                Assert.IsFalse(result.IsNew, "Variable is no longer new");
            }
        }
All Usage Examples Of PHPAnalysis.Analysis.CFG.VariableResolver::ResolveVariable