知識マップ: PSScriptAnalyzerでPowerShellスクリプトの品質を守る ── ルール選定とCI導入

記事「PSScriptAnalyzerでPowerShellスクリプトの品質を守る ── ルール選定とCI導入」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。

この記事は、PowerShell公式の静的解析モジュールPSScriptAnalyzerを社内スクリプトへ導入する実務手順を扱う。PSScriptAnalyzerSettings.psd1という1つの設定ファイルをリポジトリに置くことで、VS Codeの拡張機能とGitHub ActionsのCIが同じ基準で解析するように整える。重大度はルールごとに決まっており、平文パスワード検出などのルールはError指定だけでは素通りするため、資格情報系のルールは名前を明示してCIの失敗条件に加えるべきだとしている。既存資産には、まずErrorをゼロにし、次に変更ファイルだけを厳格に解析する段階導入を勧め、テストを書かずに初日から効果が出るPSScriptAnalyzerをPesterより先に導入する順序を推奨している。

PSScriptAnalyzer導入とCI化の知識マップPSScriptAnalyzerがInvoke-ScriptAnalyzerや設定ファイルを介してVS CodeとGitHub Actionsの双方に基準をそろえ、重大度に関係なく落とすべきルールを名指しし、段階導入を経てPesterより先に効果を出す様子を示す図。利用する利用するで構成できる利用するで構成できる利用する利用する利用する利用するより先に行うべき前提とする前提とする前提とする前提とする利用する利用する利用する利用する前提とする前提とする前提とする利用するPSScriptAnalyzerGitHub ActionsInvoke-ScriptAnalyzerSuppressMessageAttributePSScriptAnalyzerSettings.psd1VS CodeのPowerShell拡張機能PSAvoidUsingPlainTextForPasswordPSUseDeclaredVarsMoreThanAssignmentsInvoke-FormatterPesterPSScriptAnalyzerの段階導入変更ファイルのみを対象にした差分解析actions/checkoutのfetch-depth: 0GITHUB_BASE_REFPSAvoidUsingConvertToSecureStringWithPlainTextPSAvoidUsingUsernameAndPasswordParams重大度に関係なく落とすルールの明示リスト

概念間の関係(全22件)

図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。

主要概念の定義

PSScriptAnalyzer
PowerShellスクリプトを静的解析するMicrosoft公式のツール。
GitHub Actions
GitHubが提供する、リポジトリのイベントをトリガーにワークフローを実行するCI/CDサービス。
VS CodeのPowerShell拡張機能
Visual Studio Code上でPowerShellの編集・デバッグを支援する拡張機能。PSScriptAnalyzerを内蔵し、編集中にその場で警告を表示する。
Invoke-ScriptAnalyzer
PSScriptAnalyzerのルールに基づいてスクリプトやモジュールを解析するコマンドレット。
PSScriptAnalyzerの段階導入
重大度Errorをゼロにする第1段階、変更ファイルのみを厳格に解析する第2段階、除外ルールを徐々に外す第3段階という順で既存資産へ静的解析を導入していく進め方。
変更ファイルのみを対象にした差分解析
ベースブランチとの差分を取り、変更されたps1/psm1/psd1ファイルだけをPSScriptAnalyzerの解析対象にすることで、既存の負債を残したまま新しい問題の増加だけを止める手法。
重大度に関係なく落とすルールの明示リスト
重大度がWarningでも資格情報関連など常に失敗条件へ含めたいPSScriptAnalyzerのルール名を、CIの判定コードに明示的に列挙したもの。

機械可読データ

このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。