【发布时间】:2019-01-25 00:41:14
【问题描述】:
我的分析器的伪代码
我的测试课:
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(...));
}
}
我的带有修复方法的代码修复提供程序:
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 方法中放置断点,代码在那里停止/中断)并且我可以看到红色的波浪线。
有人知道为什么代码修复会被触发,尽管它不应该被触发吗?
【问题讨论】:
标签: c# .net roslyn roslyn-code-analysis