【问题标题】:Does Roslyn support code fix actions for project/compilation-level diagnostics (with no location)?Roslyn 是否支持项目/编译级诊断的代码修复操作(没有位置)?
【发布时间】: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


【解决方案1】:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-04
    相关资源
    最近更新 更多