You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Roslyn解析C#代码片段并验证解析是否成功?

检查Roslyn解析C#代码是否成功的方法

用Roslyn解析C#代码后,判断解析是否成功的核心是检查语法树返回的诊断信息(Diagnostics)——因为ParseText方法即使遇到语法错误也会生成语法树,只是会附带错误诊断,所以得筛选出错误级别的项来判断。

具体步骤

  • 调用语法树的GetDiagnostics()方法获取所有诊断信息
  • 筛选出Severity为DiagnosticSeverity.Error的项,如果没有这类项,说明解析成功

示例代码(带检查逻辑)

var tree = CSharpSyntaxTree.ParseText(@"
class TestClass 
{
    void TestMethod ()
    {
        int i;
    }
}");

// 获取所有诊断信息
var diagnostics = tree.GetDiagnostics();
// 判断是否存在错误级别的诊断
var hasParseErrors = diagnostics.Any(diagnostic => diagnostic.Severity == DiagnosticSeverity.Error);

if (!hasParseErrors)
{
    Console.WriteLine("代码解析成功");
}
else
{
    Console.WriteLine("解析失败,存在以下语法错误:");
    foreach (var error in diagnostics.Where(d => d.Severity == DiagnosticSeverity.Error))
    {
        Console.WriteLine($"- 错误内容:{error.GetMessage()},位置:{error.Location.GetLineSpan()}");
    }
}

补充说明

  • 诊断信息的Severity分为Error、Warning、Info、Hidden四个级别,只有Error代表解析失败(语法错误导致无法正确构建语法树)
  • 像示例中未使用的变量i会被标记为Warning,这类情况属于代码规范问题,不影响解析成功的判断

内容的提问来源于stack exchange,提问作者Saikat Mondal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:54:53