Skip to content

Commit 11b08d6

Browse files
author
Kapil Borle
committed
Resolve IncludeDefaultRules and RecurseCustomRulePath params
1 parent cdd1436 commit 11b08d6

File tree

2 files changed

+42
-2
lines changed

2 files changed

+42
-2
lines changed

Engine/Commands/InvokeScriptAnalyzerCommand.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -280,8 +280,12 @@ protected override void BeginProcessing()
280280

281281
// For includeDefaultRules and RecurseCustomRulePath we override the value in the settings file by
282282
// command line argument.
283-
combRecurseCustomRulePath = combRecurseCustomRulePath || settingsObj.RecurseCustomRulePath;
284-
combIncludeDefaultRules = combIncludeDefaultRules || settingsObj.IncludeDefaultRules;
283+
combRecurseCustomRulePath = OverrideSwitchParam(
284+
settingsObj.RecurseCustomRulePath,
285+
"RecurseCustomRulePath");
286+
combIncludeDefaultRules = OverrideSwitchParam(
287+
settingsObj.IncludeDefaultRules,
288+
"IncludeDefaultRules");
285289
}
286290

287291
// Ideally we should not allow the parameter to be set from settings and command line
@@ -410,6 +414,13 @@ private bool IsFileParameterSet()
410414
return String.Equals(this.ParameterSetName, "File", StringComparison.OrdinalIgnoreCase);
411415
}
412416

417+
private bool OverrideSwitchParam(bool paramValue, string paramName)
418+
{
419+
return MyInvocation.BoundParameters.ContainsKey(paramName)
420+
? ((SwitchParameter)MyInvocation.BoundParameters[paramName]).ToBool()
421+
: paramValue;
422+
}
423+
413424
#endregion // Private Methods
414425
}
415426
}

Tests/Engine/InvokeScriptAnalyzer.tests.ps1

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -418,6 +418,35 @@ Describe "Test CustomizedRulePath" {
418418
$v.Count | Should Be 3
419419
}
420420
}
421+
422+
Context "When used from settings file and command line simulataneusly" {
423+
BeforeAll {
424+
$settings = @{
425+
CustomRulePath = "$directory\samplerule"
426+
IncludeDefaultRules = $false
427+
RecurseCustomRulePath = $false
428+
}
429+
$isaParams = @{
430+
Path = "$directory\TestScript.ps1"
431+
Settings = $settings
432+
}
433+
}
434+
435+
It "Should combine CustomRulePaths" {
436+
$v = Invoke-ScriptAnalyzer @isaParams -CustomRulePath "$directory\CommunityAnalyzerRules"
437+
$v.Count | Should Be 2
438+
}
439+
440+
It "Should override the settings IncludeDefaultRules parameter" {
441+
$v = Invoke-ScriptAnalyzer @isaParams -IncludeDefaultRules
442+
$v.Count | Should Be 2
443+
}
444+
445+
It "Should override the settings RecurseCustomRulePath parameter" {
446+
$v = Invoke-ScriptAnalyzer @isaParams -RecurseCustomRulePath
447+
$v.Count | Should Be 3
448+
}
449+
}
421450
}
422451

423452
Context "When used incorrectly" {

0 commit comments

Comments
 (0)