PSScriptAnalyzer is a static code checker for PowerShell modules and scripts. PSScriptAnalyzer checks the quality of PowerShell code by running a set of rules. The rules are based on PowerShell best practices identified by PowerShell Team and the community. It generates DiagnosticResults (errors and warnings) to inform users about potential code defects and suggests possible solutions for improvements.
PSScriptAnalyzer ships with a collection of built-in rules that check various aspects of PowerShell code such as:
Invoke-Expression
Conceptual user documentation has been moved out of the source code repository and into the documentation repository so that it can be published on learn.microsoft.com.
The goal of this migration is to have the user documentation on learn.microsoft.com. The source code repository should only contain documentation for the code base, such as how to build the code or how to contribute to the code.
User documentation that has been migrated:
PowerShellBestPractices.md
content has been moved to PSScriptAnalyzer rules and recommendationsScriptRuleDocumentation.md
content has been moved to Creating custom rulesThere is one exception - the documentation for the rules and cmdlets will remain in the docs folder to facilitate build testing and to be archived as part of each release. Only the documentation for the latest release is published on on learn.microsoft.com.
To install PSScriptAnalyzer from the PowerShell Gallery, see Installing PSScriptAnalyzer.
To install PSScriptAnalyzer from source code:
Obtain the source
Download the latest source code from the release page OR
Clone the repository (needs git)
git clone https://github.com/PowerShell/PSScriptAnalyzer
Navigate to the source directory
cd path/to/PSScriptAnalyzer
Building You can either build using the Visual Studio
solution PSScriptAnalyzer.sln
or build using PowerShell
specifically for your platform as follows:
The default build is for the currently used version of PowerShell
Windows PowerShell version 5.0
PowerShell 7
Rebuild documentation since it gets built automatically only the first time
.\build.ps1 -Documentation
Build all versions (PowerShell v5 and v7) and documentation
Import the module
Import-Module .\out\PSScriptAnalyzer\[version]\PSScriptAnalyzer.psd1
To confirm installation: run Get-ScriptAnalyzerRule
in the PowerShell console to obtain the built-in rules.
Adding/Removing resource strings
For adding/removing resource strings in the *.resx
files, it is recommended to use Visual Studio
since it automatically updates the strongly typed *.Designer.cs
files. The Visual Studio 2017 Community Edition
is free to use but should you not have/want to use Visual Studio
then you can either manually adapt the *.Designer.cs
files or use the New-StronglyTypedCsFileForResx.ps1
script although the latter is discouraged since it leads to a bad diff of the *.Designer.cs
files.
Pester-based ScriptAnalyzer Tests are located in path/to/PSScriptAnalyzer/Tests
folder.
To retrieve the results of the run, you can use the tools which are part of the build module (build.psm1
)
Import-Module ./build.psm1 Get-TestResults
To retrieve only the errors, you can use the following:
Import-Module ./build.psm1 Get-TestFailures
The documentation in this section can be found in Using PSScriptAnalyzer.
Contributions are welcomeThere are many ways to contribute:
changelog.md
) with the new version number and change set. When updating the changelog please follow the same pattern as that of previous change sets (otherwise this may break the next step).New-Release
cmdlet to perform the following actions.
Engine/Engine.csproj
and Rules/Rules.csproj
out/
Import-Module .\Utils\ReleaseMaker.psm1 New-Release
master
with the new version number.Please see our Code of Conduct before participating in this project.
For any security issues, please see our Security Policy.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4