private static void AnalyzePropertySetter(PropertyDeclarationSyntax propertyNode, SyntaxNodeAnalysisContext context) { var setter = propertyNode.AccessorList.Accessors.Single( _ => _.IsKind(SyntaxKind.SetAccessorDeclaration)).Body; var setterWalker = new FindSetOrLoadInvocationsWalker(setter, context.SemanticModel); if (setterWalker.Invocation != null) { var setterStatements = setter.Statements; if (setterStatements.Count() != 1) { context.ReportDiagnostic(Diagnostic.Create( EvaluatePropertiesForSimplicityAnalyzer.onlyUseCslaPropertyMethodsInGetSetRule, setter.GetLocation())); } else { var expressionNode = setterStatements[0] as ExpressionStatementSyntax; if (expressionNode == null) { context.ReportDiagnostic(Diagnostic.Create( EvaluatePropertiesForSimplicityAnalyzer.onlyUseCslaPropertyMethodsInGetSetRule, setter.GetLocation())); } else { var invocation = expressionNode.ChildNodes().SingleOrDefault( _ => _.IsKind(SyntaxKind.InvocationExpression)) as InvocationExpressionSyntax; if (invocation == null || invocation != setterWalker.Invocation) { context.ReportDiagnostic(Diagnostic.Create( EvaluatePropertiesForSimplicityAnalyzer.onlyUseCslaPropertyMethodsInGetSetRule, setter.GetLocation())); } } } } }
private static void AnalyzePropertySetter(PropertyDeclarationSyntax propertyNode, SyntaxNodeAnalysisContext context) { var setter = propertyNode.AccessorList.Accessors.Single( _ => _.IsKind(SyntaxKind.SetAccessorDeclaration)).Body; var setterWalker = new FindSetOrLoadInvocationsWalker(setter, context.SemanticModel); if (setterWalker.Invocation != null) { var setterStatements = setter.Statements; if (setterStatements.Count() != 1) { context.ReportDiagnostic(Diagnostic.Create( EvaluatePropertiesForSimplicityAnalyzer.onlyUseCslaPropertyMethodsInGetSetRule, setter.GetLocation())); } else { var expressionNode = setterStatements[0] as ExpressionStatementSyntax; if (expressionNode == null) { context.ReportDiagnostic(Diagnostic.Create( EvaluatePropertiesForSimplicityAnalyzer.onlyUseCslaPropertyMethodsInGetSetRule, setter.GetLocation())); } else { var invocation = expressionNode.ChildNodes().SingleOrDefault( _ => _.IsKind(SyntaxKind.InvocationExpression)) as InvocationExpressionSyntax; if (invocation == null || invocation != setterWalker.Invocation) { context.ReportDiagnostic(Diagnostic.Create( EvaluatePropertiesForSimplicityAnalyzer.onlyUseCslaPropertyMethodsInGetSetRule, setter.GetLocation())); } } } } }