public override void VisitIdentifierName(Microsoft.CodeAnalysis.CSharp.Syntax.IdentifierNameSyntax node) { if (node.ToString() == identifier) { var symbol = model.GetSymbolInfo(node).Symbol; if (symbol != null) { symbols.Add(symbol); } } base.VisitIdentifierName(node); }
/// <summary> /// Rewrites the expression with a field access expression. /// </summary> /// <param name="node">IdentifierNameSyntax</param> /// <returns>SyntaxNode</returns> private SyntaxNode RewriteExpression(IdentifierNameSyntax node) { SyntaxNode rewritten = node; if (!base.IsInStateScope(rewritten) || !(base.IsMachineField(rewritten) || base.IsMachineMethod(rewritten))) { return rewritten; } if (!(rewritten.Parent is MemberAccessExpressionSyntax) && !(rewritten.Parent is ObjectCreationExpressionSyntax) && !(rewritten.Parent is TypeOfExpressionSyntax)) { var text = "this." + node.ToString(); rewritten = SyntaxFactory.ParseExpression(text); rewritten = rewritten.WithTriviaFrom(node); } if ((rewritten.Parent is MemberAccessExpressionSyntax) && (rewritten.Parent as MemberAccessExpressionSyntax).Expression is IdentifierNameSyntax && ((rewritten.Parent as MemberAccessExpressionSyntax).Expression as IdentifierNameSyntax). IsEquivalentTo(node)) { var text = "this." + node.ToString(); rewritten = SyntaxFactory.ParseExpression(text); rewritten = rewritten.WithTriviaFrom(node); } return rewritten; }
/// <summary> /// Rewrites the expression with a field access expression. /// </summary> /// <param name="node">IdentifierNameSyntax</param> /// <returns>SyntaxNode</returns> private SyntaxNode RewriteExpression(IdentifierNameSyntax node) { SyntaxNode rewritten = node; if (!base.IsInStateScope(rewritten) || !(base.IsMachineField(rewritten) || base.IsMachineMethod(rewritten))) { return rewritten; } if (rewritten.Parent is ArgumentSyntax && rewritten.Parent.Parent is ArgumentListSyntax && rewritten.Parent.Parent.Parent is InvocationExpressionSyntax) { var invocation = rewritten.Parent.Parent.Parent as InvocationExpressionSyntax; if (invocation.Expression is IdentifierNameSyntax && (invocation.Expression as IdentifierNameSyntax).Identifier.ValueText.Equals("nameof") && invocation.ArgumentList.Arguments.Count == 1) { return rewritten; } } if (!(rewritten.Parent is MemberAccessExpressionSyntax) && !(rewritten.Parent is ObjectCreationExpressionSyntax) && !(rewritten.Parent is TypeOfExpressionSyntax)) { var text = "this." + node.ToString(); rewritten = SyntaxFactory.ParseExpression(text); rewritten = rewritten.WithTriviaFrom(node); } if ((rewritten.Parent is MemberAccessExpressionSyntax) && (rewritten.Parent as MemberAccessExpressionSyntax).Expression is IdentifierNameSyntax && ((rewritten.Parent as MemberAccessExpressionSyntax).Expression as IdentifierNameSyntax). IsEquivalentTo(node)) { var text = "this." + node.ToString(); rewritten = SyntaxFactory.ParseExpression(text); rewritten = rewritten.WithTriviaFrom(node); } return rewritten; }
public override void VisitIdentifierName(IdentifierNameSyntax node) { VisitSymbol(node.ToString()); }
private async Task<Document> ReplaceWrongDateTimeUsageWithNodaTimeEquivalent(Document document, IdentifierNameSyntax node, CancellationToken cancellationToken) { string replacement = node.ToString() == "Today" ? "SystemClock.Instance.Now.InZone(DateTimeZoneProviders.Tzdb.GetSystemDefault()).Date" : "SystemClock.Instance.Now"; return await ApplyReplacement(document, node, cancellationToken, replacement, "NodaTime"); }
private async Task<Document> ReplaceWrongDateTimeUsageWithDateTimeOffset(Document document, IdentifierNameSyntax node, CancellationToken cancellationToken) { return await ApplyReplacement(document, node, cancellationToken, "DateTimeOffset.Now" + (node.ToString() == "Today" ? ".Date" : ""), "System"); }