PowerShell / PowerShell/PSScriptAnalyzer
Ability for script exclusions for PSUseCompatible* rules
まだ誰も着手していません。
- 主要言語
- C#
- スター
- 2.2k
- フォーク
- 414
- 平均マージ
- 13時間 1分
- マージ済み PR(30日)
- 2
説明
Summary of the new feature
When using PSUseCompatible* rules with target profiles for PSv3, PSSA generates a whole bunch of issues for Pester tests that I have inside of my Script/Module projects. My Dev machine, as well as build machines run latest version of PowerShell, and the tests don't get bundled with my script/modules, hence I don't really care whether they'd run on versions other than latest. It would be really great if I could exclude my Test scripts (by path, by name pattern, or by name) just for these rules, and keep the rest of the rules active.
Proposed technical implementation details (optional)
Introduce an additional configuration setting for PSUseCompatible* rules, i.e. IgnoreScriptPath as follows:
@{
Rules = @{
PSUseCompatibleCommands = @{
Enable = $true
TargetProfiles = @(...);
IgnoreScriptPath = @(
'./Tests/', # Ignore any scripts within the Tests sub-folder
'./*.ps1', # Ignore all PowerShell scripts withing the root folder (i.e. build scripts)
'./HelperScripts/SomeHelperScriptForMyBuild.ps1' # Ignore a single helper file
)
};
PSUseCompatibleSyntax = @{
Enable = $true
TargetedVersions = @(...)
IgnoreScriptPath = @(
'./Tests/', # Ignore any scripts within the Tests sub-folder
'./*.ps1', # Ignore all PowerShell scripts withing the root folder (i.e. build scripts)
'./HelperScripts/SomeHelperScriptForMyBuild.ps1' # Ignore a single helper file
)
};
PSUseCompatibleTypes = @{
Enable = $true
TargetProfiles = @(...)
IgnoreScriptPath = @(
'./Tests/', # Ignore any scripts within the Tests sub-folder
'./*.ps1', # Ignore all PowerShell scripts withing the root folder (i.e. build scripts)
'./HelperScripts/SomeHelperScriptForMyBuild.ps1' # Ignore a single helper file
)
};
'PSUseCompatibleCmdlets' = @{
'compatibility' = @(...)
'IgnoreScriptPath' = @(
'./Tests/', # Ignore any scripts within the Tests sub-folder
'./*.ps1', # Ignore all PowerShell scripts withing the root folder (i.e. build scripts)
'./HelperScripts/SomeHelperScriptForMyBuild.ps1' # Ignore a single helper file
)
}
}
}
Alternatively, given that the collection of paths to ignore would most likely be identical for all the PSUseCompatible* rules, it might actually be easier to mention it once in a separate place, i.e.:
@{
Rules = @{
...
}
'PSUseCompatibleRulesIgnoreScriptPath' = @(
'./Tests/', # Ignore any scripts within the Tests sub-folder
'./*.ps1', # Ignore all PowerShell scripts withing the root folder (i.e. build scripts)
'./HelperScripts/SomeHelperScriptForMyBuild.ps1' # Ignore a single helper file
)
}
What is the latest version of PSScriptAnalyzer at the point of writing
1.18.3
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、PSUseCompatibleCommands、PSUseCompatibleSyntax、PSUseCompatibleTypes、PSUseCompatibleCmdlets のルール設定と、それらの既存のテストを見つけます。2つの提案された設定を比較し、除外されたスクリプトがこれらの互換性ルールだけを抑制し、他のルールは有効なままであることを確認します。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- powershell
- 領域
- tooling
- issue の種類
- 機能追加
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- おおむね明確
- 初心者へのやさしさ
- 35/100