private static async Task <CodeAnalysisMetricData> CodeAnalysisMetricData(string source, CancellationToken cancellationToken)
        {
            var document   = DiagnosticVerifier.GetDocuments(new[] { source }).First();
            var syntaxTree = await document.GetSyntaxTreeAsync(cancellationToken);

            var compilation = CSharpCompilation.Create(Guid.NewGuid().ToString(), new[] { syntaxTree });
            var metrics     = await Metrics.CodeAnalysisMetricData.ComputeAsync(compilation, cancellationToken);

            return(metrics);
        }
        private static string ApplyFix(CodeFixProvider codeFixProvider, Diagnostic diagnostic, string oldSource)
        {
            var document = DiagnosticVerifier.GetDocuments(new[] { oldSource }).Single();

            var actions = new List <CodeAction>();
            var context = new CodeFixContext(document, diagnostic, (a, d) => actions.Add(a), CancellationToken.None);

            codeFixProvider.RegisterCodeFixesAsync(context).Wait();

            if (!actions.Any())
            {
                return(oldSource);
            }

            document = ApplyFix(document, actions.ElementAt(0));

            var actual = GetStringFromDocument(document);

            return(actual);
        }