2016-11-29 4 views
2

VS 2015 템플릿을 사용하여 Roslyn 분석기를 만들었습니다. 진단 도구가 기본적으로 활성화되어 있다면, 단위 테스트를 포함한 모든 작업을 수행 할 수 있습니다.프로그래밍 방식으로 Roslyn 분석을 실행할 때 Roslyn 진단 활성화

나는에 isEnabledByDefault 매개 변수를 설정하면 나는 .ruleset 파일을 사용하여 진단을 가능하게하여 Visual Studio에서 작업하는 모든 것을 얻을 수 DiagnosticDescriptorfalse에. 그러나 진단이 기본적으로 비활성화되면 단위 테스트는 더 이상 결과를보고하지 않습니다.

단위 테스트 중에 어떻게 이러한 기본값에 의한 진단을 활성화 할 수 있습니까? 유닛 테스트에서 Roslyn Compilation/Analyzer/Diagnostic/등을 호출하는 방법을 변경할 준비가되었습니다. 결과를 얻지는 못했지만 다양한 소스에서 긁어 모으기 시작한 문서 부족으로 설정을 지정하는 방법을 찾지 못했습니다.

답변

3

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에 플래그를 추가 할 수 있습니다.

+1

완벽하게 작동합니다! 감사! 나는 이것이 어떤 대답을하지 못하는 또 다른 너무 구체적인 질문이 될 것이라고 확신했다. 그래서 잘못 입증하게 된 것을 기쁘게 생각합니다. :) –