Roslyn - CodeFixProvider正在被解雇但是DiagnosticAnalyzer不是用于类析构函数

loading...


1

我的分析器的伪代码

我的考试班:

public class TestClass
{
     ~TestClass()
     {
     }
}

我的诊断分析器类有分析方法:

public class TestClassAnalyzer : DiagnosticAnalyzer
{
     public const string AnalyzerId = "TestId";

     ...

     private static void AnalyzeSymbol(SymbolAnalysisContext context)
     {
           var methodDeclaration = (IMethodSymbol)context.Symbol;

           if (methodDeclaration.MethodKind == MethodKind.Destructor)
           {
               return;
           }

           context.ReportDiagnostic(Diagnostic.Create(...));
     }
}

我的代码修复提供程序使用fix方法:

public class TestClassCodeFixProvider : CodeFixProvider
{
     public sealed override ImmutableArray<string> FixableDiagnosticIds =>
          ImmutableArray.Create(TestClassAnalyzer.AnalyzerId);


     ...

     private async Task<Solution> PerformFixAsync(Document document, ...)
     {
          ...

          return await Renamer.RenameSymbolAsync(...)
     }
}

如果我在我的TestClassAnalyzer类中检查析构函数之后放置一个断点,那么我的代码永远不会停止/中断,这对我来说是有意义的,因为我跳出了带有return关键字的方法 . 然而,我的代码修复被解雇了(我可以在PerformFixAnync方法中放置断点并且代码在那里停止/中断)我可以看到红色波浪形 .

有没有人知道为什么代码修复被解雇虽然它不应该被解雇?

loading...

0回答

No Data

评论

暂时没有评论!