From 65b645b15a798716cc2f48538b881db15d9519ab Mon Sep 17 00:00:00 2001 From: Christoph Bergmeister Date: Mon, 20 Apr 2020 19:00:50 +0100 Subject: [PATCH 1/4] only go back as much as needed --- Rules/UseConsistentIndentation.cs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/Rules/UseConsistentIndentation.cs b/Rules/UseConsistentIndentation.cs index abb0f207e..71cbc2751 100644 --- a/Rules/UseConsistentIndentation.cs +++ b/Rules/UseConsistentIndentation.cs @@ -219,10 +219,22 @@ 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 = false; + var searchIndex = tokenIndex; + var searchToken = tokens[searchIndex]; + var searchLine = token.Extent.StartLineNumber; + do + { + searchToken = tokens[searchIndex]; + searchLine = searchToken.Extent.StartLineNumber; + var searchcolumn = searchToken.Extent.StartColumnNumber; + if (searchToken.Kind == TokenKind.Pipe && searchcolumn < token.Extent.StartColumnNumber) + { + lineHasPipelineBeforeToken = true; + break; + } + searchIndex--; + } while (searchLine == token.Extent.StartLineNumber && searchIndex >= 0); AddViolation(token, tempIndentationLevel, diagnosticRecords, ref onNewLine, lineHasPipelineBeforeToken); } From 4ebc4bf15fefc0692f310e417a318bfb708c3689 Mon Sep 17 00:00:00 2001 From: Christoph Bergmeister Date: Wed, 22 Apr 2020 20:38:55 +0100 Subject: [PATCH 2/4] refactor into function --- Rules/UseConsistentIndentation.cs | 36 +++++++++++++++++-------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/Rules/UseConsistentIndentation.cs b/Rules/UseConsistentIndentation.cs index 71cbc2751..3522d0378 100644 --- a/Rules/UseConsistentIndentation.cs +++ b/Rules/UseConsistentIndentation.cs @@ -219,22 +219,7 @@ public override IEnumerable AnalyzeScript(Ast ast, string file } } - bool lineHasPipelineBeforeToken = false; - var searchIndex = tokenIndex; - var searchToken = tokens[searchIndex]; - var searchLine = token.Extent.StartLineNumber; - do - { - searchToken = tokens[searchIndex]; - searchLine = searchToken.Extent.StartLineNumber; - var searchcolumn = searchToken.Extent.StartColumnNumber; - if (searchToken.Kind == TokenKind.Pipe && searchcolumn < token.Extent.StartColumnNumber) - { - lineHasPipelineBeforeToken = true; - break; - } - searchIndex--; - } while (searchLine == token.Extent.StartLineNumber && searchIndex >= 0); + bool lineHasPipelineBeforeToken = LineHasPipelineBeforeToken(tokens, tokenIndex, token); AddViolation(token, tempIndentationLevel, diagnosticRecords, ref onNewLine, lineHasPipelineBeforeToken); } @@ -269,6 +254,25 @@ public override IEnumerable AnalyzeScript(Ast ast, string file return diagnosticRecords; } + private static bool LineHasPipelineBeforeToken(Token[] tokens, int tokenIndex, Token token) + { + bool lineHasPipelineBeforeToken = false; + var searchIndex = tokenIndex; + var searchLine = token.Extent.StartLineNumber; + do + { + searchLine = tokens[searchIndex].Extent.StartLineNumber; + var searchcolumn = tokens[searchIndex].Extent.StartColumnNumber; + if (tokens[searchIndex].Kind == TokenKind.Pipe && searchcolumn < token.Extent.StartColumnNumber) + { + lineHasPipelineBeforeToken = true; + break; + } + searchIndex--; + } while (searchLine == token.Extent.StartLineNumber && searchIndex >= 0); + return lineHasPipelineBeforeToken; + } + private static CommandBaseAst LastPipeOnFirstLineWithPipeUsage(PipelineAst pipelineAst) { CommandBaseAst lastPipeOnFirstLineWithPipeUsage = pipelineAst.PipelineElements[0]; From d5e52293036aaba358192dbb2b26d65cf265fb22 Mon Sep 17 00:00:00 2001 From: Christoph Bergmeister Date: Wed, 22 Apr 2020 20:53:42 +0100 Subject: [PATCH 3/4] simplify --- Rules/UseConsistentIndentation.cs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Rules/UseConsistentIndentation.cs b/Rules/UseConsistentIndentation.cs index 3522d0378..59833b036 100644 --- a/Rules/UseConsistentIndentation.cs +++ b/Rules/UseConsistentIndentation.cs @@ -256,7 +256,6 @@ public override IEnumerable AnalyzeScript(Ast ast, string file private static bool LineHasPipelineBeforeToken(Token[] tokens, int tokenIndex, Token token) { - bool lineHasPipelineBeforeToken = false; var searchIndex = tokenIndex; var searchLine = token.Extent.StartLineNumber; do @@ -265,12 +264,11 @@ private static bool LineHasPipelineBeforeToken(Token[] tokens, int tokenIndex, T var searchcolumn = tokens[searchIndex].Extent.StartColumnNumber; if (tokens[searchIndex].Kind == TokenKind.Pipe && searchcolumn < token.Extent.StartColumnNumber) { - lineHasPipelineBeforeToken = true; - break; + return true; } searchIndex--; } while (searchLine == token.Extent.StartLineNumber && searchIndex >= 0); - return lineHasPipelineBeforeToken; + return false; } private static CommandBaseAst LastPipeOnFirstLineWithPipeUsage(PipelineAst pipelineAst) From 2814147394f23da2dc2a7798d4a192d31aef59ee Mon Sep 17 00:00:00 2001 From: "Christoph Bergmeister [MVP]" Date: Wed, 22 Apr 2020 21:26:48 +0100 Subject: [PATCH 4/4] Apply suggestions from code review Co-Authored-By: Robert Holt --- Rules/UseConsistentIndentation.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Rules/UseConsistentIndentation.cs b/Rules/UseConsistentIndentation.cs index 59833b036..c92d7c291 100644 --- a/Rules/UseConsistentIndentation.cs +++ b/Rules/UseConsistentIndentation.cs @@ -256,12 +256,12 @@ public override IEnumerable AnalyzeScript(Ast ast, string file private static bool LineHasPipelineBeforeToken(Token[] tokens, int tokenIndex, Token token) { - var searchIndex = tokenIndex; - var searchLine = token.Extent.StartLineNumber; + int searchIndex = tokenIndex; + int searchLine = token.Extent.StartLineNumber; do { searchLine = tokens[searchIndex].Extent.StartLineNumber; - var searchcolumn = tokens[searchIndex].Extent.StartColumnNumber; + int searchcolumn = tokens[searchIndex].Extent.StartColumnNumber; if (tokens[searchIndex].Kind == TokenKind.Pipe && searchcolumn < token.Extent.StartColumnNumber) { return true;