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());
        }
Другие вопросы по тегам