【发布时间】:2020-12-21 00:00:36
【问题描述】:
让我们报告一些诊断并为此诊断注册代码修复。
private static void OnCompilation(CompilationAnalysisContext context) {
var compilation = context.Compilation;
var diagnostic = Diagnostic.Create( Rule, (Location) null );
context.ReportDiagnostic( diagnostic );
}
public sealed override Task RegisterCodeFixesAsync(CodeFixContext context) {
var document = context.Document;
//var span = context.Span;
var diagnostic = context.Diagnostics.Single();
RegisterCodeFix( context, $"Fix compilation", diagnostic, Action );
Task<Solution> Action(CancellationToken cancellationToken) {
return Task.FromResult( document.Project.Solution );
}
}
问题是:无法执行代码修复操作。 灯泡不显示。 即使我可以执行它,这里的文档也是空的。
那么,是否可以对编译级诊断进行代码修复?
【问题讨论】:
-
它适用于您的单元测试吗?
-
CodeFixContext在文档为空时抛出ArgumentNullException。因此,测试不起作用。但我不使用 roslyn 测试库。也许这个问题以某种方式解决了。
标签: roslyn roslyn-code-analysis