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