diff --git a/Rules/UseConsistentIndentation.cs b/Rules/UseConsistentIndentation.cs index abb0f207e..c92d7c291 100644 --- a/Rules/UseConsistentIndentation.cs +++ b/Rules/UseConsistentIndentation.cs @@ -219,10 +219,7 @@ public override IEnumerable AnalyzeScript(Ast ast, string file } } - var lineHasPipelineBeforeToken = tokens.Any(oneToken => - oneToken.Kind == TokenKind.Pipe && - oneToken.Extent.StartLineNumber == token.Extent.StartLineNumber && - oneToken.Extent.StartColumnNumber < token.Extent.StartColumnNumber); + bool lineHasPipelineBeforeToken = LineHasPipelineBeforeToken(tokens, tokenIndex, token); AddViolation(token, tempIndentationLevel, diagnosticRecords, ref onNewLine, lineHasPipelineBeforeToken); } @@ -257,6 +254,23 @@ public override IEnumerable AnalyzeScript(Ast ast, string file return diagnosticRecords; } + private static bool LineHasPipelineBeforeToken(Token[] tokens, int tokenIndex, Token token) + { + int searchIndex = tokenIndex; + int searchLine = token.Extent.StartLineNumber; + do + { + searchLine = tokens[searchIndex].Extent.StartLineNumber; + int searchcolumn = tokens[searchIndex].Extent.StartColumnNumber; + if (tokens[searchIndex].Kind == TokenKind.Pipe && searchcolumn < token.Extent.StartColumnNumber) + { + return true; + } + searchIndex--; + } while (searchLine == token.Extent.StartLineNumber && searchIndex >= 0); + return false; + } + private static CommandBaseAst LastPipeOnFirstLineWithPipeUsage(PipelineAst pipelineAst) { CommandBaseAst lastPipeOnFirstLineWithPipeUsage = pipelineAst.PipelineElements[0];