PSScriptAnalyzer icon indicating copy to clipboard operation
PSScriptAnalyzer copied to clipboard

Rule request: Avoid reserved words for functions names

Open iRon7 opened this issue 10 months ago • 0 comments

According the document about Reserved Words, the reserved words that cannot be used as identifiers because they have a special meaning in PowerShell:


about_Reserved_Words

Short description

Lists the reserved words that cannot be used as identifiers because they have a special meaning in PowerShell.

Long description

There are certain words that have special meaning in PowerShell. When these words appear without quotation marks, PowerShell attempts to apply their special meaning rather than treating them as character strings. To use these words as parameter arguments in a command or script without invoking their special meaning, enclose the reserved words in quotation marks.

The following are the reserved words in PowerShell:

assembly         exit            process
base             filter          public
begin            finally         return
break            for             sequence
catch            foreach         static
class            from (*)        switch
command          function        throw
configuration    hidden          trap
continue         if              try
data             in              type
define (*)       inlinescript    until
do               interface       using
dynamicparam     module          var (*)
else             namespace       while
elseif           parallel        workflow
end              param
enum             private

(*) These keywords are reserved for future use.

It would be nice if the script analyzer warns (or even errors) if any of these names are used for a function name. E.g. I would expect the following script definition to return an issue:

Invoke-ScriptAnalyzer -ScriptDefinition {function if {}}.ToString()

iRon7 avatar Apr 30 '25 07:04 iRon7