Skip to content

Commit

Permalink
Add documentation CustomRulePath in README.md
Browse files Browse the repository at this point in the history
  • Loading branch information
johlju committed Feb 2, 2021
1 parent 5797a04 commit e53fc60
Showing 1 changed file with 69 additions and 3 deletions.
72 changes: 69 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,10 @@ Settings Support in ScriptAnalyzer
Settings that describe ScriptAnalyzer rules to include/exclude based on `Severity` can be created and supplied to
`Invoke-ScriptAnalyzer` using the `Setting` parameter. This enables a user to create a custom configuration for a specific environment. We support the following modes for specifying the settings file.

## Built-in Presets
## Using parameter Settings

### Built-in Presets

ScriptAnalyzer ships a set of built-in presets that can be used to analyze scripts. For example, if the user wants to run *PowerShell Gallery* rules on their module, then they use the following command.

```powershell
Expand All @@ -327,7 +330,7 @@ PS> Invoke-ScriptAnalyzer -Path /path/to/module/ -Settings PSGallery -Recurse

Along with `PSGallery` there are a few other built-in presets, including, `DSC` and `CodeFormatting`, that can be used. These presets can be tab completed for the `Settings` parameter.

## Explicit
### Explicit

The following example excludes two rules from the default set of rules and any rule
that does not output an Error or Warning diagnostic record.
Expand Down Expand Up @@ -362,7 +365,8 @@ Then invoke that settings file:
Invoke-ScriptAnalyzer -Path MyScript.ps1 -Settings PSScriptAnalyzerSettings.psd1
```

## Implicit
### Implicit

If you place a PSScriptAnayzer settings file named `PSScriptAnalyzerSettings.psd1` in your project root, PSScriptAnalyzer will discover it if you pass the project root as the `Path` parameter.

```PowerShell
Expand All @@ -371,6 +375,68 @@ Invoke-ScriptAnalyzer -Path "C:\path\to\project" -Recurse

Note that providing settings explicitly takes higher precedence over this implicit mode. Sample settings files are provided [here](https://github.com/PowerShell/PSScriptAnalyzer/tree/master/Engine/Settings).

## Custom rules

It is possible to provide one or more paths to custom rules in the settings file.
It is important that these paths either point to a module's folder (implicitly
uses the module manifest) or to the module's script file (.psm1). The module
should export the custom rules (as functions) for them to be available to
PS Script Analyzer.

In this example the property `CustomRulePath` points to two different modules.
Both modules exports the rules (the functions) with the verb `Measure`
so that us used for the property `IncludeRules`.

```powershell
@{
CustomRulePath = @(
'.\output\RequiredModules\DscResource.AnalyzerRules'
'.\tests\QA\AnalyzerRules\SqlServerDsc.AnalyzerRules.psm1'
)
IncludeRules = @(
'Measure-*'
)
}
```

It is also possible to used default rules by adding those to `IncludeRules`.
When including default rules is important that the property `IncludeDefaultRules`
is set to `$true` otherwise the default rules will not be triggered.

```powershell
@{
CustomRulePath = @(
'.\output\RequiredModules\DscResource.AnalyzerRules'
'.\tests\QA\AnalyzerRules\SqlServerDsc.AnalyzerRules.psm1'
)
IncludeDefaultRules = $true
IncludeRules = @(
# Default rules
'PSAvoidDefaultValueForMandatoryParameter'
'PSAvoidDefaultValueSwitchParameter'
# Custom rules
'Measure-*'
)
}
```

### Using custom rules in Visual Studio Code

It is also possible to use the custom rules that are provided in the
settings file in Visual Studio Code. This is done by adding a Visual Studio
Code workspace settings file (`.vscode/settings.json`).

```json
{
"powershell.scriptAnalysis.settingsPath": ".vscode\\analyzersettings.psd1",
"powershell.scriptAnalysis.enable": true,
}
```

[Back to ToC](#table-of-contents)

ScriptAnalyzer as a .NET library
Expand Down

0 comments on commit e53fc60

Please sign in to comment.