private static void ReportDiagnostic(ReportingContext reportingContext) { // This is the new way SonarLint will handle how and what to report... if (SonarAnalysisContext.ReportDiagnostic != null) { Debug.Assert(SonarAnalysisContext.ShouldDiagnosticBeReported == null, "Not expecting SonarLint to set both the old and the new delegates."); SonarAnalysisContext.ReportDiagnostic(reportingContext); return; } // ... but for compatibility purposes we need to keep handling the old-fashioned way if (SonarAnalysisContext.AreAnalysisScopeMatching(reportingContext.Compilation, new[] { reportingContext.Diagnostic.Descriptor }) && !VbcHelper.IsTriggeringVbcError(reportingContext.Diagnostic) && (SonarAnalysisContext.ShouldDiagnosticBeReported?.Invoke(reportingContext.SyntaxTree, reportingContext.Diagnostic) ?? true)) { reportingContext.ReportDiagnostic(reportingContext.Diagnostic); } }