public AddThrowCodeAction(CodeActionEdit editFactory, IDocument document, CommonSyntaxNode node)
        {
            _editFactory = editFactory;
            _document = document;
            _node = (CatchClauseSyntax)node;

            Description = "please throw the exception if you can't handle it";
            Icon = null;
        }
        public IEnumerable<CodeIssue> GetIssues(IDocument document, CommonSyntaxNode node, CancellationToken cancellationToken)
        {
            editFactory = new CodeActionEdit(document);

            if (node.Kind == (int)SyntaxKind.CatchClause)
            {
                var CatchNode = (Roslyn.Compilers.CSharp.CatchClauseSyntax)node;
                if (CatchNode.Block.Statements.Count == 0 )
                {
                    var issueDescription = "Ouch! Do you really want to leave this CatchBlock empty? ";
                    yield return
                        new CodeIssue(CodeIssueKind.Error, node.Span, issueDescription,
                                        new AddThrowCodeAction(editFactory, document, node));
                }
            }
        }
        public String ExecuteAction(ICodeAction codeAction)
        {
            CodeActionEdit codeActionEdit = codeAction.GetEdit(cancellationToken);

            IDocument newDocument = codeActionEdit.UpdatedSolution.GetDocument(documentId);

            // By default, code formatting is not applied (Visual Studio does that, not the action itself).
            // It must be explicitly forced to format all annotated nodes.
            DocumentTransformation transformation = newDocument.Format(CodeAnnotations.Formatting, cancellationToken: cancellationToken);

            newDocument = transformation.GetUpdatedDocument(cancellationToken);

            CommonSyntaxNode root = newDocument.GetSyntaxRoot();
            //Assert.IsFalse(root.DescendantNodesAndSelf().Any(n => n.HasDiagnostics));

            String newCode = newDocument.GetText().ToString();

            return(newCode);
        }
 public CodeActionEdit GetEdit(CancellationToken cancellationToken = new 
     CancellationToken())
 {
     var updatedDocument = updateMethodDeclaration(document);
     updatedDocument = updateMethodInvocations(updatedDocument);
     var updatedSolution = document.Project.Solution.UpdateDocument(updatedDocument);
     var edit = new CodeActionEdit(null, updatedSolution,
         ConditionCheckersUtils.GetRemoveCodeIssueComputerOperation(computer));
     return edit;
 }