public static bool HasAnalysisComment([CanBeNull] IMethodDeclaration methodDeclaration, string comment,
                                              ReSharperControlConstruct.Kind status)
        {
            if (methodDeclaration == null)
            {
                return(false);
            }

            var current = methodDeclaration.PrevSibling;

            while (current is IWhitespaceNode || current is ICSharpCommentNode)
            {
                while (current is IWhitespaceNode)
                {
                    current = current.PrevSibling;
                }

                while (current is ICSharpCommentNode commentNode)
                {
                    var commentText   = commentNode.CommentText;
                    var configuration = ReSharperControlConstruct.ParseCommentText(commentText);
                    var kind          = configuration.Kind;

                    if (kind == status && configuration.GetControlIds().Any(id => id == comment))
                    {
                        return(true);
                    }

                    current = current.PrevSibling;
                }
            }

            return(false);
        }
        public static bool HasAnalysisComment(string markName, ITreeNode node, out bool isMarked)
        {
            if (node is IMethodDeclaration methodDeclaration)
            {
                const ReSharperControlConstruct.Kind restore = ReSharperControlConstruct.Kind.Restore;
                const ReSharperControlConstruct.Kind disable = ReSharperControlConstruct.Kind.Disable;

                if (HasAnalysisComment(methodDeclaration, markName, disable))
                {
                    isMarked = false;
                    return(true);
                }


                if (HasAnalysisComment(methodDeclaration, markName, restore))
                {
                    isMarked = true;
                    return(true);
                }
            }

            isMarked = false;
            return(false);
        }
示例#3
0
        public static bool HasAnalysisComment([CanBeNull] IFunctionDeclaration functionDeclaration, string comment, ReSharperControlConstruct.Kind status)
        {
            if (functionDeclaration == null)
            {
                return(false);
            }

            var current = functionDeclaration.PrevSibling;

            while (current is IWhitespaceNode || current is ICSharpCommentNode)
            {
                while (current is IWhitespaceNode)
                {
                    current = current.PrevSibling;
                }

                while (current is ICSharpCommentNode commentNode)
                {
                    var str           = commentNode.CommentText;
                    var configuration = ReSharperControlConstruct.ParseCommentText(str);

                    if (configuration.Kind == status)
                    {
                        foreach (var id in configuration.GetControlIds())
                        {
                            if (id == comment)
                            {
                                return(true);
                            }
                        }
                    }

                    current = current.PrevSibling;
                }
            }

            return(false);
        }