/// <summary> /// Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. /// <param name="analyzer">Analyzer to be checked for suppression.</param> /// <param name="options">Compilation options.</param> /// <param name="onAnalyzerException"> /// Optional delegate which is invoked when an analyzer throws an exception. /// Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. /// </param> /// </summary> public static bool IsDiagnosticAnalyzerSuppressed(DiagnosticAnalyzer analyzer, CompilationOptions options, Action <Exception, DiagnosticAnalyzer, Diagnostic> onAnalyzerException = null) { VerifyAnalyzerArgumentForStaticApis(analyzer); if (options == null) { throw new ArgumentNullException(nameof(options)); } var analyzerExecutor = AnalyzerExecutor.CreateForSupportedDiagnostics(onAnalyzerException, AnalyzerManager.Instance); return(AnalyzerDriver.IsDiagnosticAnalyzerSuppressed(analyzer, options, AnalyzerManager.Instance, analyzerExecutor)); }
/// <summary> /// Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. /// <param name="analyzer">Analyzer to be checked for suppression.</param> /// <param name="options">Compilation options.</param> /// <param name="onAnalyzerException"> /// Optional delegate which is invoked when an analyzer throws an exception. /// Delegate can do custom tasks such as report the given analyzer exception diagnostic, report a non-fatal watson for the exception, etc. /// </param> /// </summary> public static bool IsDiagnosticAnalyzerSuppressed(DiagnosticAnalyzer analyzer, CompilationOptions options, Action <Exception, DiagnosticAnalyzer, Diagnostic> onAnalyzerException = null) { if (analyzer == null) { throw new ArgumentNullException(nameof(analyzer)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } Action <Exception, DiagnosticAnalyzer, Diagnostic> voidHandler = (ex, a, diag) => { }; onAnalyzerException = onAnalyzerException ?? voidHandler; var analyzerExecutor = AnalyzerExecutor.CreateForSupportedDiagnostics(onAnalyzerException, CancellationToken.None); return(AnalyzerDriver.IsDiagnosticAnalyzerSuppressed(analyzer, options, AnalyzerManager.Instance, analyzerExecutor)); }
/// <summary> /// Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. /// <paramref name="continueOnAnalyzerException"/> says whether the caller would like the exception thrown by the analyzers to be handled or not. If true - Handles ; False - Not handled. /// </summary> public static bool IsDiagnosticAnalyzerSuppressed(DiagnosticAnalyzer analyzer, CompilationOptions options, Func <Exception, DiagnosticAnalyzer, bool> continueOnAnalyzerException) { if (analyzer == null) { throw new ArgumentNullException(nameof(analyzer)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } if (continueOnAnalyzerException == null) { throw new ArgumentNullException(nameof(continueOnAnalyzerException)); } Action <Diagnostic> dummy = _ => { }; return(AnalyzerDriver.IsDiagnosticAnalyzerSuppressed(analyzer, options, dummy, continueOnAnalyzerException, CancellationToken.None)); }
/// <summary> /// Returns true if all the diagnostics that can be produced by this analyzer are suppressed through options. /// <paramref name="continueOnAnalyzerException"/> says whether the caller would like the exception thrown by the analyzers to be handled or not. If true - Handles ; False - Not handled. /// </summary> public static bool IsDiagnosticAnalyzerSuppressed(DiagnosticAnalyzer analyzer, CompilationOptions options, Func <Exception, DiagnosticAnalyzer, bool> continueOnAnalyzerException) { if (analyzer == null) { throw new ArgumentNullException(nameof(analyzer)); } if (options == null) { throw new ArgumentNullException(nameof(options)); } if (continueOnAnalyzerException == null) { throw new ArgumentNullException(nameof(continueOnAnalyzerException)); } // TODO: Public API change to surface exception diagnostics? Action <Diagnostic> addExceptionDiagnostic = diagnostic => { }; var analyzerExecutor = AnalyzerExecutor.CreateForSupportedDiagnostics(addExceptionDiagnostic, continueOnAnalyzerException, CancellationToken.None); return(AnalyzerDriver.IsDiagnosticAnalyzerSuppressed(analyzer, options, AnalyzerManager.Instance, analyzerExecutor)); }