NRefactory 5, начиная с простого примера
Я хотел бы начать использовать NRefactory 5 для анализа файлов CSharp, чтобы сделать рефакторинг. Но документации мало. Поэтому я попытался и потерпел неудачу: я начал со следующего кода, чтобы посмотреть, смогу ли AstNode
дерево из файла CS.
Я ожидаю, что синтаксический анализ создаст несколько узлов для меня, но нет. Кто-нибудь может направить меня?
TextReader reader = File.OpenText(fname);
CompilationUnit compilationUnit;
CSharpParser parser = new CSharpParser();
compilationUnit = parser.Parse(reader, fname);
AstNode node = compilationUnit.GetNextNode();
System.Collections.Generic.IEnumerable<AstNode> desc =
compilationUnit.Descendants;
foreach (AstNode jo in desc)
{
System.Console.WriteLine("At least something here");
}
2 ответа
Посмотрите на ICSharpCode.NRefactory.Demo
Проект в исходном коде NRefactory - он может анализировать некоторый код и отображать дерево синтаксиса в TreeView.
Код, который вы разместили, должен действительно создавать некоторые узлы - compilationUnit.Children
будет содержать прямых потомков (обычно usings и объявление пространства имен).
И есть также статья CodeProject.
Модуль компиляции устарел. Он заменен синтаксическим деревом.
Попробуйте следующий код:
TextReader reader = File.OpenText("myfile.cs");
SyntaxTree syntaxTree;
CSharpParser parser = new CSharpParser();
syntaxTree = parser.Parse(reader, "myfile.cs");
IEnumerable<AstNode> desc = syntaxTree.Descendants;
foreach(AstNode astNode in desc)
{
System.Console.WriteLine(astNode.GetType());
}