private static void PropertyMustBeReadOnly(SyntaxNodeAnalysisContext syntaxNodeAnalysisContext) { if (!TestDetection.IsDerivedFromTestBase(syntaxNodeAnalysisContext)) { return; } if (syntaxNodeAnalysisContext.Node is not PropertyDeclarationSyntax propertyDeclarationSyntax) { return; } if (propertyDeclarationSyntax.AccessorList?.Accessors.Any(IsMutable) == true) { // its read-only or const. syntaxNodeAnalysisContext.ReportDiagnostic(Diagnostic.Create(descriptor: Rule, propertyDeclarationSyntax.GetLocation())); } }
private static void FieldMustBeReadOnly(SyntaxNodeAnalysisContext syntaxNodeAnalysisContext) { if (!TestDetection.IsDerivedFromTestBase(syntaxNodeAnalysisContext)) { return; } if (syntaxNodeAnalysisContext.Node is not FieldDeclarationSyntax fieldDeclarationSyntax) { return; } if (fieldDeclarationSyntax.Modifiers.Any(SyntaxKind.ReadOnlyKeyword) || fieldDeclarationSyntax.Modifiers.Any(SyntaxKind.ConstKeyword)) { // its read-only or const. return; } syntaxNodeAnalysisContext.ReportDiagnostic(Diagnostic.Create(descriptor: Rule, fieldDeclarationSyntax.GetLocation())); }
private static bool IsTestMethodInClassNotDerivedFromTestBase(SyntaxNodeAnalysisContext syntaxNodeAnalysisContext, MethodDeclarationSyntax methodDeclarationSyntax) { return(TestDetection.IsTestMethod(syntaxNodeAnalysisContext: syntaxNodeAnalysisContext, methodDeclarationSyntax: methodDeclarationSyntax) && !TestDetection.IsDerivedFromTestBase(syntaxNodeAnalysisContext)); }