SyntaxNode ConvertToVar(VariableDeclarationSyntax node) { if (node.Parent is LocalDeclarationStatementSyntax == false) { return(null); } if ((node.Parent as LocalDeclarationStatementSyntax).IsConst) { return(null); } if (node.Type is IdentifierNameSyntax varIdentifierNameSyntax) { if (varIdentifierNameSyntax.Identifier.ValueText == VarKeyword) { return(null); } } if (node.Variables.Count > 1) { return(null); } var variable = node.Variables.FirstOrDefault(); if (variable.Initializer == null) { return(null); } var typeOfInitializer = SemanticModel.GetTypeInfo(variable.Initializer.Value); var typeOfTypeDef = SemanticModel.GetTypeInfo(node.Type); if (typeOfInitializer.Type?.Name == typeOfTypeDef.Type?.Name) { if (isReportOnlyMode) { var lineSpan = node.GetFileLinePosSpan(); AddReport(new ChangesReport(node) { LineNumber = lineSpan.StartLinePosition.Line, Column = lineSpan.StartLinePosition.Character, Message = "Should Convert To Var", Generator = nameof(SimplifyVariableDeclarations) }); } node = node .WithType( SyntaxFactory.ParseTypeName(VarKeyword) .WithTrailingTrivia(SyntaxFactory.Space) .WithLeadingTrivia(node.Type.GetLeadingTrivia()) ); } return(base.VisitVariableDeclaration(node)); }