gpt4 book ai didi

unit-testing - 以编程方式运行 Roslyn 分析时启用 Roslyn 诊断

转载 作者:行者123 更新时间:2023-12-04 04:48:17 27 4
gpt4 key购买 nike

我使用 VS 2015 模板创建了一个 Roslyn 分析器。假设默认情况下启用了诊断,我的一切正常,包括单元测试。

如果我将DiagnosticDescriptor 上的isEnabledByDefault 参数设置为false,我可以通过使用.ruleset 文件。但是,一旦默认情况下禁用诊断,单元测试将不再报告其结果。

如何在单元测试期间启用这些默认禁用的诊断?我准备改变单元测试调用 Roslyn Compilation/Analyzer/Diagnostic/等的方式。结果,但由于缺乏我设法从各种来源抓取的文档,我还没有找到指定设置的方法。

最佳答案

需要覆盖类似于规则文件的诊断严重性,CompilationOptions.SpecificDiagnosticOptions考虑到这一点(编译有 Options 可以覆盖这样的东西)。

我已成功将我的分析器更改为禁用,并在我的宠物项目中覆盖 DiagnosticVerifier.Helper(在 Helpers 中)(参见提交 8dfc02c我是怎么做到的)。基本上,它归结为:

private static Compilation OverrideDiagnosticSeverity(
Compilation compilation,
string diagnosticId,
ReportDiagnostic reportDiagnostic)
{
var compilationOptions = compilation.Options;
var specificDiagnosticOptions = compilationOptions.SpecificDiagnosticOptions;

specificDiagnosticOptions = specificDiagnosticOptions.Add(diagnosticId, reportDiagnostic);
var options = compilationOptions.WithSpecificDiagnosticOptions(specificDiagnosticOptions);

return compilation.WithOptions(options);
}

您可能希望向 VerifyCSharpDiagnostic 添加一个标志,以便根据单元测试的请求执行此操作。

关于unit-testing - 以编程方式运行 Roslyn 分析时启用 Roslyn 诊断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40877620/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com