在微软的这篇教程中,我创建了一个针对Roslyn的分析器。
根据该页面,您可以将规则标记为DiagnosticSeverity.Error
,这将导致构建失败:
在声明Rule字段的行上,您还可以更新生成的诊断的严重性,使其成为错误而不是警告。如果正则表达式字符串无法解析,则Match方法肯定会在运行时引发异常,并且您应该像处理C#编译器错误一样阻止构建。将规则的严重性更改为DiagnosticSeverity.Error:
internal static DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category, DiagnosticSeverity.Error, isEnabledByDefault: true, description: Description);
在我的代码中,我已经按照此处详细介绍的方式创建了规则:
private static readonly DiagnosticDescriptor Rule =
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category,
DiagnosticSeverity.Error, true, helpLinkUri: HelpUrl);
这个规则很有效。它会显示红色线并在错误列表中显示消息。但是,构建成功,我可以成功运行应用程序。
NB:我创建了这个规则来捕获Thread.Sleep
的示例。
是否需要其他设置来确保规则会导致构建失败?