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

标签 .net 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 方法。

关于.net - 是否可以使用 Roslyn 检测无法访问的代码或其他内置编译警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10233506/

相关文章:

c# - 创建带有心跳的任务

c# - .NET 程序集文化

.net - 如何使用密码生成 Rijndael KEY 和 IV?

c# - 无法通过 Roslyn 检索类型信息

c# - 如何使用 Roslyn 确定 XML 文档注释中 cref 的类型?

asp.net - 使用 asp.net mvc 和 Identity 的每个选项卡 session

c# - NUnit3 测试不在 TFS 构建上运行

未经检查的 uint 的 C# 溢出行为

c# - 何时使用 SemanticModel.GetSymbolInfo 以及何时使用 SemanticModel.GetDeclaredSymbol

c# - 调试 Roslyn 分析器