Mik*_*nen 3 unit-testing mstest roslyn roslyn-code-analysis
我已经使用 VS 2015 模板创建了一个 Roslyn 分析器。鉴于默认情况下启用了诊断,我已经让一切正常工作,包括单元测试。
如果我设定的isEnabledByDefault参数上DiagnosticDescriptor,以false我能得到的一切使用使诊断在Visual Studio中的工作.ruleset文件。但是,一旦默认禁用诊断,单元测试将不再报告其结果。
如何在单元测试期间启用这些默认禁用的诊断?我准备改变单元测试调用 Roslyn Compilation/Analyzer/Diagnostic/等的方式。结果,但由于缺乏我设法从各种来源抓取的文档,我还没有找到指定设置的方法。
您需要覆盖类似于规则文件的诊断严重性,CompilationOptions.SpecificDiagnosticOptions允许(编译具有Options可以覆盖类似的内容)。
我已经成功地将我的分析器更改为禁用状态,并覆盖了我的宠物项目中的DiagnosticVerifier.Helper(in 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);
}
Run Code Online (Sandbox Code Playgroud)
您可能希望VerifyCSharpDiagnostic根据单元测试的要求添加一个标志来执行此操作。
| 归档时间: |
|
| 查看次数: |
256 次 |
| 最近记录: |