PHPAnalysis.Analysis.CFG.Taint.ConditionTaintAnalyser.EqualsComparison C# (CSharp) Метод

EqualsComparison() приватный Метод

private EqualsComparison ( XmlNode node ) : TaintSets
node System.Xml.XmlNode
Результат TaintSets
        private TaintSets EqualsComparison(XmlNode node)
        {
            if (!isConditional)
            {
                return null;
            }
            var leftNode = node.GetSubNode(AstConstants.Subnode + ":" + AstConstants.Subnodes.Left)
                               .GetSubNodesByPrefix(AstConstants.Node).Single();
            var rightNode = node.GetSubNode(AstConstants.Subnode + ":" + AstConstants.Subnodes.Right)
                                .GetSubNodesByPrefix(AstConstants.Node).Single();

            var scalarNodes = new[]
                              {
                                  AstConstants.Nodes.Scalar_DNumber,
                                  AstConstants.Nodes.Scalar_LNumber,
                                  AstConstants.Nodes.Scalar_MagicConst_Class,
                                  AstConstants.Nodes.Scalar_MagicConst_Dir,
                                  AstConstants.Nodes.Scalar_MagicConst_File,
                                  AstConstants.Nodes.Scalar_MagicConst_Function,
                                  AstConstants.Nodes.Scalar_MagicConst_Line,
                                  AstConstants.Nodes.Scalar_MagicConst_Method,
                                  AstConstants.Nodes.Scalar_MagicConst_Namespace,
                                  AstConstants.Nodes.Scalar_MagicConst_Trait,
                                  AstConstants.Nodes.Scalar_String,
                              };

            if (_varResolver.IsResolvableNode(leftNode) && scalarNodes.Contains(rightNode.LocalName))
            {
                var varResolver = new VariableResolver(_variables[isNegated ? EdgeType.False : EdgeType.True]);
                var var = varResolver.ResolveVariable(leftNode);
                var.Variable.Info.Taints = new TaintSets().ClearTaint();
            }
            else if (scalarNodes.Contains(leftNode.LocalName) && _varResolver.IsResolvableNode(rightNode))
            {
                var varResolver = new VariableResolver(_variables[isNegated ? EdgeType.False : EdgeType.True]);
                var var = varResolver.ResolveVariable(rightNode);
                var.Variable.Info.Taints = new TaintSets().ClearTaint();
            }

            return new TaintSets().ClearTaint();
        }