< Summary

Information
Class: Pozitron.Analyzers.PrivateConstructorNullabilitySuppressor
Assembly: PrivateConstructorDiagnosticSuppressor
File(s): /home/runner/work/PrivateConstructorDiagnosticSuppressor/PrivateConstructorDiagnosticSuppressor/src/PrivateConstructorDiagnosticSuppressor/PrivateConstructorNullabilitySuppressor.cs
Tag: 6_11093823298
Line coverage
100%
Covered lines: 14
Uncovered lines: 0
Coverable lines: 14
Total lines: 38
Line coverage: 100%
Branch coverage
90%
Covered branches: 9
Total branches: 10
Branch coverage: 90%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
get_SuppressionDescriptor()100%11100%
.cctor()100%11100%
get_SupportedSuppressions()100%11100%
ReportSuppressions(...)90%1010100%

File(s)

/home/runner/work/PrivateConstructorDiagnosticSuppressor/PrivateConstructorDiagnosticSuppressor/src/PrivateConstructorDiagnosticSuppressor/PrivateConstructorNullabilitySuppressor.cs

#LineLine coverage
 1using Microsoft.CodeAnalysis;
 2using Microsoft.CodeAnalysis.CSharp;
 3using Microsoft.CodeAnalysis.CSharp.Syntax;
 4using Microsoft.CodeAnalysis.Diagnostics;
 5using System.Collections.Immutable;
 6using System.Linq;
 7
 8namespace Pozitron.Analyzers;
 9
 10[DiagnosticAnalyzer(LanguageNames.CSharp)]
 11public sealed class PrivateConstructorNullabilitySuppressor : DiagnosticSuppressor
 12{
 2113    public static SuppressionDescriptor SuppressionDescriptor { get; } = new(
 114        id: "POZ0001",
 115        suppressedDiagnosticId: "CS8618",
 116        justification: "The state is set externally by 3rd party libraries (EF Core, mappers, etc).");
 17
 3018    public override ImmutableArray<SuppressionDescriptor> SupportedSuppressions { get; } = [SuppressionDescriptor];
 19
 20    public override void ReportSuppressions(SuppressionAnalysisContext context)
 21    {
 2422        foreach (var diagnostic in context.ReportedDiagnostics)
 23        {
 624            if (SuppressionDescriptor.SuppressedDiagnosticId.Equals(diagnostic.Id))
 25            {
 626                var node = diagnostic.Location.SourceTree?
 627                    .GetRoot(context.CancellationToken)
 628                    .FindNode(diagnostic.Location.SourceSpan);
 29
 630                if (node is ConstructorDeclarationSyntax ctorDeclarationSyntax
 1331                    && ctorDeclarationSyntax.Modifiers.Any(modifier => modifier.IsKind(SyntaxKind.PrivateKeyword)))
 32                {
 233                    context.ReportSuppression(Suppression.Create(SuppressionDescriptor, diagnostic));
 34                }
 35            }
 36        }
 637    }
 38}