public override SyntaxNode VisitFieldDeclaration(FieldDeclarationSyntax node) { if (node.Modifiers.Any(SyntaxKind.ReadOnlyKeyword)) { return(node); } if (semanticModel.GetTypeInfo(node.Declaration.Type).Type.Name != "Bindable") { return(node); } if (!node.Declaration.Type.IsKind(SyntaxKind.GenericName)) { return(node); } if (semanticModel.GetTypeInfo(node.Declaration.Type).Type.ContainingNamespace.Name != "Zebble" && semanticModel.GetTypeInfo(node.Declaration.Type).Type.ContainingNamespace.Name != "Olive") { return(node); } if (isReportOnlyMode) { var lineSpan = node.GetFileLinePosSpan(); AddReport(new ChangesReport(node) { LineNumber = lineSpan.StartLinePosition.Line, Column = lineSpan.StartLinePosition.Character, Message = "Should Add Readonly Modifier", Generator = nameof(ZebbleCleaner) }); return(node); } return(node.AddModifiers( SyntaxFactory.Token(SyntaxKind.ReadOnlyKeyword) .WithTrailingTrivia(SyntaxFactory.ParseTrailingTrivia(" ")))); }