通过roslyn更改代码中的所有空格

时间:2016-10-30 21:13:07

标签: c# syntax code-generation roslyn

我正在尝试学习roslyn,我想将我方法中的所有空格更改为相同的长度。

例如我想改变这个:

private void Method()
{
    int a=2;
        int b=4;
                int c;
    if (b != 0)
    {
        c = (a / b);
    }
}

对于这样的事情(我想忽略大括号):

private void Method()
{
        int a=2;
        int b=4;
        int c;
        if (b != 0)
    {
        c = (a / b);
    }
}

我尝试了VisitBlock,然后更改了每个语句的leadingTrivia。

我在IEnumerable Inteface中有我的语句,我有新语句的列表

IEnumerable<StatementSyntax> statements = node.Statements.OfType<StatementSyntax>();
var newStatements = new SyntaxList<SyntaxNode>();

然后我正在创建新的空白琐事

接下来我在循环中创建新语句,最后我创建了新块。

foreach (var statement in statements)
{
    StatementSyntax newStatement = statement.WithLeadingTrivia(newWhiteSpace);
    newStatements = newStatements.Insert(newStatements.Count, newStatement);
}
var newBlock = SyntaxFactory.Block(newStatements)
node = node.ReplaceNode(node, newBlock);

这对我来说几乎没问题但是当我有大于1行的状态网时,只有第一行被改变。

0 个答案:

没有答案