Пример #1
0
        public override LocalList <IDeclaredElement> GetRootMarksFromNode(ITreeNode currentNode,
                                                                          IDeclaredElement containingFunction)
        {
            var result = base.GetRootMarksFromNode(currentNode, containingFunction);

            // it means we are in functional type member like methodDeclaration
            if (containingFunction == null)
            {
                return(result);
            }

            var declaration     = currentNode as IDeclaration;
            var declaredElement = declaration?.DeclaredElement;

            if (declaredElement == null || !UnityCallGraphUtil.IsFunctionNode(declaration))
            {
                return(result);
            }

            using (var processor = new ExpensiveCodeProcessor(declaration))
            {
                declaration.ProcessThisAndDescendants(processor);

                if (processor.ProcessingIsFinished)
                {
                    result.Add(declaredElement);
                }
            }

            return(result);
        }
        public override LocalList <IDeclaredElement> GetRootMarksFromNode(ITreeNode currentNode, IDeclaredElement containingFunction)
        {
            var result = new LocalList <IDeclaredElement>();

            if (containingFunction == null)
            {
                return(result);
            }

            var declaration     = currentNode as IDeclaration;
            var declaredElement = declaration?.DeclaredElement;

            if (!ReferenceEquals(containingFunction, declaredElement))
            {
                return(result);
            }

            var processor = new ExpensiveCodeProcessor();

            declaration.ProcessDescendants(processor);
            if (processor.IsExpensiveCodeFound)
            {
                result.Add(declaredElement);
            }

            return(result);
        }
Пример #3
0
        public override LocalList <IDeclaredElement> GetRootMarksFromNode(ITreeNode currentNode,
                                                                          IDeclaredElement containingFunction)
        {
            var result = new LocalList <IDeclaredElement>();

            // it means we are in functional type member like methodDeclaration
            if (containingFunction == null)
            {
                return(result);
            }

            var declaration     = currentNode as IDeclaration;
            var declaredElement = declaration?.DeclaredElement;

            if (declaredElement == null || !UnityCallGraphUtil.IsFunctionNode(declaration))
            {
                return(result);
            }

            var hasComment = false;

            if (declaration is IFunctionDeclaration functionDeclaration)
            {
                hasComment = UnityCallGraphUtil.HasAnalysisComment(functionDeclaration, MarkId, ReSharperControlConstruct.Kind.Restore);
            }

            if (hasComment)
            {
                result.Add(declaredElement);
            }
            else
            {
                using (var processor = new ExpensiveCodeProcessor(declaration))
                {
                    declaration.ProcessThisAndDescendants(processor);

                    if (processor.ProcessingIsFinished)
                    {
                        result.Add(declaredElement);
                    }
                }
            }

            return(result);
        }