public override SyntaxNode VisitVariableDeclarator(VariableDeclaratorSyntax node) { if (node.Initializer == null) { return(base.VisitVariableDeclarator(node)); } if (node.Parent is VariableDeclarationSyntax == false) { return(base.VisitVariableDeclarator(node)); } if (node.Parent.Parent is FieldDeclarationSyntax == false) { return(base.VisitVariableDeclarator(node)); } if ((node.Parent.Parent as FieldDeclarationSyntax).Modifiers.Any(x => x.ValueText == "const")) { return(base.VisitVariableDeclarator(node)); } var value = node.Initializer.Value; if (value is LiteralExpressionSyntax) { var variableTypeNode = GetSystemTypeOfTypeNode((node.Parent as VariableDeclarationSyntax)); var valueObj = (value as LiteralExpressionSyntax).Token.Value; if (TypesMapItem.GetAllPredefinedTypesDic().ContainsKey(variableTypeNode)) { var typeItem = TypesMapItem.GetAllPredefinedTypesDic()[variableTypeNode]; if ((typeItem.DefaultValue == null && valueObj != null) || (typeItem.DefaultValue != null && !typeItem.DefaultValue.Equals(valueObj))) { return(base.VisitVariableDeclarator(node)); } } else { if (valueObj != null) { return(base.VisitVariableDeclarator(node)); } } node = node.WithInitializer(null).WithoutTrailingTrivia(); } //else if (value is DefaultExpressionSyntax) //{ // node = node.WithInitializer(null).WithoutTrailingTrivia(); //} //else if (value is ObjectCreationExpressionSyntax) //{ // if (variableTypeNode.IsKind(SyntaxKind.PredefinedType)) // { // node = node.WithInitializer(null).WithoutTrailingTrivia(); // } //} return(base.VisitVariableDeclarator(node)); }
string GetSystemTypeOfTypeNode(VariableDeclarationSyntax d) { if (d.Type is PredefinedTypeSyntax) { return(TypesMapItem.GetAllPredefinedTypesDic()[(d.Type as PredefinedTypeSyntax).Keyword.ValueText].BuiltInName.Trim()); } return(d.Type.ToFullString().Trim()); }