Почему Roslyn не соблюдает пустяки Whitespace, вместо этого вводит отступ табуляции? - PullRequest
0 голосов
/ 08 октября 2018

Я занимаюсь разработкой небольшого хобби-проекта, пытающегося сделать C # доступным для компиляции в NES в этом хранилище .На момент коммита 9b532f739be некоторые из модульных тестов моего первого провайдера исправлений кода не сработали только потому, что Рослин игнорирует пустые места в пробелах, которые поступают с узла, который я хочу заменить, в строке 90 строкиФайл ForbidMuliplicationCodeFixProvider.cs .Я также пробовал NormalizeWhiteSpace на новом узле с тем же размером отступа WhiteSpaceTrivia и пару других неудачных попыток, только чтобы всегда иметь стандартные отступы размера табуляции в измененном документе.Придется ли мне мириться с этой маленькой ошибкой?

  var assignment = SyntaxFactory.AssignmentExpression(SyntaxKind.SimpleAssignmentExpression, variableIdentifier, invocation);
  assignment = assignment.WithTriviaFrom(node);
  var syntaxRoot = await document.GetSyntaxRootAsync();
  var modifiedRoot = syntaxRoot.ReplaceNode(node, assignment);

  var modifiedDocument = document.WithSyntaxRoot(modifiedRoot);
  modifiedDocument = await AddUsingStatementAsync(cancelToken, modifiedDocument);

  return modifiedDocument;

Переменная node взята из исходного документа с 6 пробелами (3 уровня отступа) WhiteSpaceTrivia, которые должны быть скопированы в заменуузел, но выходные данные измененного документа вместо этого имеют 3 вкладки отступа.

Мой тест завершается неудачно с этим сообщением:

The checked string has different spaces than expected one. At line 7, col 12, expected '...     test = NESMath....' was '...           test = NE...'.
The checked string:
    ["using NINNES.Platform.Shims;

namespace NINNES.RoslynAnalyzers.Tests.Assets {
  class MultiplicationAssignment {
    public void Multiply() {
      var test = 2;
            test = NESMath.Multiply(test, 42);
    }
  }
}
"]
The expected string:
    ["using NINNES.Platform.Shims;

namespace NINNES.RoslynAnalyzers.Tests.Assets {
  class MultiplicationAssignment {
    public void Multiply() {
      var test = 2;
      test = NESMath.Multiply(test, 42);
    }
  }
}
"]

В качестве отступления: Комментарий к коду Roslyn был бы очень признателен, просто изучая все, что связано с модификацией кода.

...