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); }
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); }