PowerShell / PowerShell/PSScriptAnalyzer

Ability for script exclusions for PSUseCompatible* rules

オープン
#1,347 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

Area - Configuration Consider - 2.0 Issue - Enhancement
主要言語
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

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

まず、PSUseCompatibleCommands、PSUseCompatibleSyntax、PSUseCompatibleTypes、PSUseCompatibleCmdlets のルール設定と、それらの既存のテストを見つけます。2つの提案された設定を比較し、除外されたスクリプトがこれらの互換性ルールだけを抑制し、他のルールは有効なままであることを確認します。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
powershell
領域
tooling
issue の種類
機能追加
難易度
4/5
見積もり時間
3〜5日
活発さ
停滞
明瞭さ
おおむね明確
初心者へのやさしさ
35/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。