Birkaç gün önce TechEd'deydim ve this talk by Kevin Pilch-Bisson (relevent part starts at about 18 minutes)'u gördüm ... Oldukça havalı olduğunu düşündüm, bu yüzden kendimle Roslyn ile oynamaya karar verdim.Roslyn CodeFixProvider kullanarak yönteme erişim düzenleyici ekleyin?
static void Main(string[] args)
{
}
Bu ok: -
Ben bir kural "Erişim Değiştirici Beyan Edilmelidir" yapmaya çalışıyorum (StyleCop SA1400) anlamı,
Bu kural ihlal
public static void Main(string[] args)
{
}
Açık dahili bir anahtar kelimeye, genel anahtar kelimeye, özel anahtar kelimeye veya pro isabetli olmalıdır. anahtar kelime.
İhlalin algılanması oldukça kolaydı, ancak şimdi bir düzeltme sağlamaya çalışıyorum. Bir şeyler denedim ve her yerde arama yaptım, ancak erişim düzenleyicileri nasıl ekleyeceğimi bulamıyorum.
public async Task<IEnumerable<CodeAction>> GetFixesAsync(Document document, TextSpan span, IEnumerable<Diagnostic> diagnostics, CancellationToken cancellationToken)
{
var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
var token = root.FindToken(span.Start);
var methodDeclaration = token.Parent as MethodDeclarationSyntax;
//var newModifiers = methodDeclaration.Modifiers.Add(SyntaxFactory.AccessorDeclaration(SyntaxKind.PublicKeyword));
//var newModifiers = new SyntaxTokenList() { new SyntaxToken() };
MethodDeclarationSyntax newMethodDeclaration = methodDeclaration.WithModifiers(methodDeclaration.Modifiers);
var newRoot = root.ReplaceNode(methodDeclaration, newMethodDeclaration);
var newDocument = document.WithSyntaxRoot(newRoot);
return new[] { CodeAction.Create("Add Public Keyword", newDocument) };
}
WithModifiers
New(), ama SyntaxKind.PublicKeyword
yapmak için nasıl bilmiyorum bir SyntaxTokenList
ihtiyacı:
Bu defa ne var. Ben de yeni varsayalım veya SyntaxFactory
kullanın emin değilim. SyntaxFactory
kullanırken Ancak, ben de ... Ben ilgi duyulup duyulmadığını ben DiagnosticAnalyzer
dahil olmak üzere tüm şeyi gönderebilir bir SyntaxToken
SyntaxKind.PublicKeyword
ait oluşturmak için gereken hangi yöntemi çözemiyorum
Kullanılmayan bir yerel "public TokenList" iniz olması dışında bana iyi görünüyor. Tıkladığınızda olduğu gibi önizlemeyi oluşturmak için Func'iniz çağrılacak, ancak bu iyi olmalı –
Tamam teşekkürler :). publicTokenList, genellikle yeniden satıcılar bana bu konuda söyler, ama ben 14'te çalıştığım için bunu yapmamıştım .. –