是否可以使用 Roslyn 检测无法访问的代码或其他内置编译警告



是否可以使用 Roslyn 检测无法访问的代码或其他内置编译警告?

private void DoSomething()
{
     string a = "TEST";
     throw new Exception("Why would I throw an exception here?");
     a = "This will never be reached"; //this is a compile time warning for unreachable code...Can I detect it?
}

我尝试检查语义和语法方法中的节点属性,但没有看到任何问题或警告集合。

您可以使用语义模型的 AnalyzeRegionControlFlow 方法发现这一点。您可以在与您感兴趣的语句对应的文本范围中调用此传递。 AnalyzeRegionControlFlow 将返回一个具有属性 RegionEndPointIsReachable 的数据结构,它还会告诉您跳入或跳出该区域的所有语句。

如果要了解如何查找编译器将报告的实际诊断,则需要对语义模型使用 GetDiagnostics 方法。

相关内容

最新更新