이름이 일부 법률에 해당하지 않는 변수의 이름을 바꾸는 CodeFix를 만들었습니다. 예를 들어, "int"변수는 "i"로 시작해야합니다. 나는이 CodeFix했습니다 그것은 작동합니다1 클릭으로 여러 변수의 이름 바꾸기
public async Task<IEnumerable<CodeAction>> GetFixesAsync(Document document, TextSpan
span, IEnumerable<Diagnostic> diagnostics, CancellationToken cancellationToken)
{
var root = await document.GetSyntaxRootAsync(cancellationToken);
var token = root.FindToken(span.Start);
var node = root.FindNode(span);
if (node.IsKind(SyntaxKind.VariableDeclarator))
{
if (node.Parent.Parent is LocalDeclarationStatementSyntax)
{
var Verify = (LocalDeclarationStatementSyntax)node.Parent.Parent;
var Verify2 = (VariableDeclarationSyntax)node.Parent;
if (!Verify.Modifiers.Any(SyntaxKind.ConstKeyword))
{
if (Verify2.Type.ToString() == "int")
{
if (token.IsKind(SyntaxKind.IdentifierToken))
{
var variable = (VariableDeclaratorSyntax)node;
string newName = variable.Identifier.ValueText;
if (newName.Length > 1)
{
newName = char.ToUpper(newName[0]) + newName.Substring(1);
}
var leading = variable.Identifier.LeadingTrivia;
var trailing = variable.Identifier.TrailingTrivia;
VariableDeclaratorSyntax newVariable = variable.WithIdentifier(SyntaxFactory.Identifier(leading, "i" + newName, trailing));
var newRoot = root.ReplaceNode(variable, newVariable);
return new[] { CodeAction.Create("Add 'i'", document.WithSyntaxRoot(newRoot)) };
}
}
}
}
}
return null;
}
그래서,이 같은 코드가있는 경우 :
int variable = 0;
variable++;
내가 경고 및 한 번의 클릭으로 선언의 이름을 바꿀 수있는 방법이 있습니다. 따라서 코드는 다음과 같이 바뀝니다.
int iVariable = 0;
variable++;
"variable"이라는 이름을 가진 모든 변수의 이름이 변경되지 않았습니다! Visual Studio에는 이미 "가변"이라고 불린 다른 변수의 이름을 바꾸는 CodeFix가 있지만 사용자에게는 두 번째 작업이 필요합니다.
내가 구현할 수있는 코드가 누구인지 직접 모든 변수의 이름을 변경한다는 것을 알고 있습니까? 그렇지 않으면 Visual Studio에서 제공하는 CodeFix를 호출 할 수있는 방법이 있습니까?
(여기에 얼마나 많은 헝가리 표기법이 죽고 썩어야하는지에 대한 설명). 이 질문은 비슷한 문제 (const 이름 바꾸기)를 처리하여 상호 참조하는 것이 유용 할 것 같습니다. http://stackoverflow.com/questions/23312525/roslyn-rename-variable-const-in-majusucle (개인적으로 – Alex
나는 헝가리 표기법이 정말로 좋지 않다는 것을 안다. 그러나 나는이 일을해야만한다. 그리고 "이름 바꾸기"에 관해서, 나는이 포스트를 만들었고 그것을했다. 지금 해결되었습니다. 질문은 동일하지 않습니다, 나는 이름을 바꾸는 방법을 찾고있는 것이 아니라 동시에 여러 이름을 바꾸는 방법을 찾고 있습니다. – Maloz
헝가리 표기법이 죽어야하고 지옥에서 썩어야합니다 ... –