Skip to content

Commit d0541d2

Browse files
committed
Code cleanup for AvoidPositionalParameter rule fix.
1 parent 3af1f03 commit d0541d2

File tree

4 files changed

+19
-16
lines changed

4 files changed

+19
-16
lines changed

Engine/Helper.cs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -620,30 +620,32 @@ public bool IsCmdlet(CommandAst cmdAst) {
620620
/// Given a commandast, checks whether positional parameters are used or not.
621621
/// </summary>
622622
/// <param name="cmdAst"></param>
623-
/// <param name="moreThanThreePositional">only return true if more than three positional parameters are used</param>
623+
/// <param name="moreThanTwoPositional">only return true if more than three positional parameters are used</param>
624624
/// <returns></returns>
625-
public bool PositionalParameterUsed(CommandAst cmdAst, bool moreThanThreePositional = false)
625+
public bool PositionalParameterUsed(CommandAst cmdAst, bool moreThanTwoPositional = false)
626626
{
627627
if (HasSplattedVariable(cmdAst))
628628
{
629629
return false;
630630
}
631631

632632
// Because of the way we count, we will also count the cmdlet as an argument so we have to -1
633-
int argumentsWithoutParameters = -1;
634-
bool wasParameter = false;
633+
int argumentsWithoutProcedingParameters = -1;
634+
bool parameterPreceding = false;
635635

636636
foreach (CommandElementAst ceAst in cmdAst.CommandElements)
637637
{
638638
var cmdParamAst = ceAst as CommandParameterAst;
639639
if (cmdParamAst != null)
640640
{
641-
wasParameter = true;
642-
} else {
643-
if (!wasParameter) {
644-
argumentsWithoutParameters += 1;
641+
parameterPreceding = true;
642+
} else
643+
{
644+
if (!parameterPreceding)
645+
{
646+
argumentsWithoutProcedingParameters += 1;
645647
}
646-
wasParameter = false;
648+
parameterPreceding = false;
647649
}
648650
}
649651

@@ -652,10 +654,10 @@ public bool PositionalParameterUsed(CommandAst cmdAst, bool moreThanThreePositio
652654

653655
if (parent != null && parent.PipelineElements.Count > 1 && parent.PipelineElements[0] != cmdAst)
654656
{
655-
argumentsWithoutParameters += 1;
657+
argumentsWithoutProcedingParameters += 1;
656658
}
657659

658-
return moreThanThreePositional ? argumentsWithoutParameters >= 3 : argumentsWithoutParameters > 0;
660+
return moreThanTwoPositional ? argumentsWithoutProcedingParameters >= 3 : argumentsWithoutProcedingParameters > 0;
659661
}
660662

661663

Rules/AvoidPositionalParameters.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,10 @@ public IEnumerable<DiagnosticRecord> AnalyzeScript(Ast ast, string fileName)
3131
IEnumerable<Ast> functionDefinitionAsts = ast.FindAll(testAst => testAst is FunctionDefinitionAst, true);
3232
HashSet<String> declaredFunctionNames = new HashSet<String>();
3333

34-
foreach (Ast foundAst in functionDefinitionAsts) {
35-
FunctionDefinitionAst functionDefinitionAst = (FunctionDefinitionAst)foundAst;
36-
if (string.IsNullOrEmpty(functionDefinitionAst.Name)) {
34+
foreach (FunctionDefinitionAst functionDefinitionAst in functionDefinitionAsts)
35+
{
36+
if (string.IsNullOrEmpty(functionDefinitionAst.Name))
37+
{
3738
continue;
3839
}
3940
declaredFunctionNames.Add(functionDefinitionAst.Name);

Rules/UseCmdletCorrectly.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ private bool MandatoryParameterExists(CommandAst cmdAst)
129129
return true;
130130
}
131131

132-
if (mandParams.Count() == 0 || (Helper.Instance.IsCmdlet(cmdAst) && Helper.Instance.PositionalParameterUsed(cmdAst)))
132+
if (mandParams.Count == 0 || (Helper.Instance.IsCmdlet(cmdAst) && Helper.Instance.PositionalParameterUsed(cmdAst)))
133133
{
134134
returnValue = true;
135135
}

Tests/Rules/AvoidPositionalParameters.tests.ps1

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ Describe "AvoidPositionalParameters" {
4141
}
4242
$warnings = Invoke-ScriptAnalyzer -ScriptDefinition "$sb"
4343
$warnings.Count | Should -BeGreaterThan 0
44-
$warnings.RuleName | Should -Contain "PSAvoidUsingPositionalParameters"
44+
$warnings.RuleName | Should -Contain $violationName
4545
$warnings.Message | Should -Contain "Cmdlet 'Foo' has positional parameter. Please use named parameters instead of positional parameters when calling a command."
4646
}
4747
}

0 commit comments

Comments
 (0)