private static void HandleProperty(SyntaxNodeAnalysisContext context) { if (context.IsExcludedFromAnalysis()) { return; } var property = (IPropertySymbol)context.ContainingSymbol; if (property.IsStatic || property.IsIndexer) { return; } var propertyDeclaration = (PropertyDeclarationSyntax)context.Node; if (propertyDeclaration.ExpressionBody != null) { return; } if (propertyDeclaration.TryGetSetAccessorDeclaration(out AccessorDeclarationSyntax setter) && setter.Body != null) { // Handle the backing field return; } if (Disposable.IsAssignedWithCreatedAndNotCachedOrInjected(property, context.SemanticModel, context.CancellationToken)) { CheckThatIDisposalbeIsImplemented(context); } }
private static void HandleField(SyntaxNodeAnalysisContext context) { if (context.IsExcludedFromAnalysis()) { return; } var field = (IFieldSymbol)context.ContainingSymbol; if (field.IsStatic) { return; } if (Disposable.IsAssignedWithCreatedAndNotCachedOrInjected(field, context.SemanticModel, context.CancellationToken)) { CheckThatIDisposalbeIsImplemented(context); } }
private static void HandleProperty(SyntaxNodeAnalysisContext context) { if (context.IsExcludedFromAnalysis()) { return; } var property = (IPropertySymbol)context.ContainingSymbol; if (property.IsStatic || property.IsIndexer) { return; } var propertyDeclaration = (PropertyDeclarationSyntax)context.Node; if (propertyDeclaration.ExpressionBody != null) { return; } if (propertyDeclaration.TryGetSetAccessorDeclaration(out AccessorDeclarationSyntax setter) && setter.Body != null) { // Handle the backing field return; } if (Disposable.IsAssignedWithCreatedAndNotCachedOrInjected(property, context.SemanticModel, context.CancellationToken)) { if (Disposable.IsMemberDisposed(property, context.Node.FirstAncestorOrSelf <TypeDeclarationSyntax>(), context.SemanticModel, context.CancellationToken) .IsEither(Result.No, Result.Unknown)) { context.ReportDiagnostic(Diagnostic.Create(Descriptor, context.Node.GetLocation())); } } }
private static void HandleField(SyntaxNodeAnalysisContext context) { if (context.IsExcludedFromAnalysis()) { return; } var field = (IFieldSymbol)context.ContainingSymbol; if (field.IsStatic) { return; } if (Disposable.IsAssignedWithCreatedAndNotCachedOrInjected(field, context.SemanticModel, context.CancellationToken)) { if (Disposable.IsMemberDisposed(field, context.Node.FirstAncestorOrSelf <TypeDeclarationSyntax>(), context.SemanticModel, context.CancellationToken) .IsEither(Result.No, Result.Unknown)) { context.ReportDiagnostic(Diagnostic.Create(Descriptor, context.Node.GetLocation())); } } }