From b050102a066af40f4fbc7cd4ef0a8fedd420086f Mon Sep 17 00:00:00 2001 From: Kapil Borle Date: Wed, 29 Mar 2017 15:08:39 -0700 Subject: [PATCH 1/2] Compare whitelisted aliases in a case-insensitive manner --- Rules/AvoidAlias.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Rules/AvoidAlias.cs b/Rules/AvoidAlias.cs index 4262ac608..30c0858cf 100644 --- a/Rules/AvoidAlias.cs +++ b/Rules/AvoidAlias.cs @@ -18,6 +18,7 @@ using System.ComponentModel.Composition; #endif using System.Globalization; +using System.Linq; namespace Microsoft.Windows.PowerShell.ScriptAnalyzer.BuiltinRules { @@ -119,7 +120,7 @@ public IEnumerable AnalyzeScript(Ast ast, string fileName) // You can also review the remark section in following document, // MSDN: CommandAst.GetCommandName Method if (aliasName == null - || whiteList.Contains(aliasName)) + || whiteList.Contains(aliasName, StringComparer.OrdinalIgnoreCase)) { continue; } From aef7ded02f6974d7359537b5fa92c914c938297c Mon Sep 17 00:00:00 2001 From: Kapil Borle Date: Wed, 29 Mar 2017 15:09:17 -0700 Subject: [PATCH 2/2] Add test for case-insensitive whitelist comparison --- Tests/Rules/AvoidUsingAlias.tests.ps1 | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/Tests/Rules/AvoidUsingAlias.tests.ps1 b/Tests/Rules/AvoidUsingAlias.tests.ps1 index 574db02cf..ebdbb0d80 100644 --- a/Tests/Rules/AvoidUsingAlias.tests.ps1 +++ b/Tests/Rules/AvoidUsingAlias.tests.ps1 @@ -61,7 +61,16 @@ Configuration MyDscConfiguration { } Context "Settings file provides whitelist" { - $whiteListTestScriptDef = 'gci; cd;' + BeforeAll { + $whiteListTestScriptDef = 'gci; cd;' + $settings = @{ + 'Rules' = @{ + 'PSAvoidUsingCmdletAliases' = @{ + 'Whitelist' = @('cd') + } + } + } + } It "honors the whitelist provided as hashtable" { $settings = @{ @@ -81,5 +90,10 @@ Configuration MyDscConfiguration { $violations = Invoke-ScriptAnalyzer -ScriptDefinition $whiteListTestScriptDef -Settings $settingsFilePath -IncludeRule $violationName $violations.Count | Should be 1 } + + It "honors the whitelist in a case-insensitive manner" { + $violations = Invoke-ScriptAnalyzer -ScriptDefinition "CD" -Settings $settings -IncludeRule $violationName + $violations.Count | Should Be 0 + } } } \ No newline at end of file