public static void Analyze(SyntaxNodeAnalysisContext context, LocalDeclarationStatementSyntax localDeclaration) { if (!localDeclaration.IsConst && !localDeclaration.SpanOrTrailingTriviaContainsDirectives()) { VariableDeclarationSyntax declaration = localDeclaration.Declaration; if (declaration != null) { SeparatedSyntaxList <VariableDeclaratorSyntax> variables = declaration.Variables; if (variables.Any()) { StatementSyntax nextStatement = localDeclaration.NextStatement(); if (nextStatement?.SpanOrLeadingTriviaContainsDirectives() == false) { SimpleAssignmentExpression assignment; if (SimpleAssignmentExpression.TryCreate(nextStatement, out assignment) && assignment.Left.IsKind(SyntaxKind.IdentifierName)) { SemanticModel semanticModel = context.SemanticModel; CancellationToken cancellationToken = context.CancellationToken; VariableDeclaratorSyntax declarator = FindInitializedVariable((IdentifierNameSyntax)assignment.Left, variables, semanticModel, cancellationToken); if (declarator != null) { EqualsValueClauseSyntax initializer = declarator.Initializer; ExpressionSyntax value = initializer?.Value; if (value == null || IsDefaultValue(declaration.Type, value, semanticModel, cancellationToken)) { context.ReportDiagnostic(DiagnosticDescriptors.MergeLocalDeclarationWithAssignment, declarator.Identifier); if (value != null) { context.ReportNode(DiagnosticDescriptors.MergeLocalDeclarationWithAssignmentFadeOut, initializer); context.ReportToken(DiagnosticDescriptors.MergeLocalDeclarationWithAssignmentFadeOut, assignment.Expression.OperatorToken); } context.ReportToken(DiagnosticDescriptors.MergeLocalDeclarationWithAssignmentFadeOut, localDeclaration.SemicolonToken); context.ReportNode(DiagnosticDescriptors.MergeLocalDeclarationWithAssignmentFadeOut, assignment.Left); } } } } } } } }