知識マップ: PSScriptAnalyzerでPowerShellスクリプトの品質を守る ── ルール選定とCI導入
記事「PSScriptAnalyzerでPowerShellスクリプトの品質を守る ── ルール選定とCI導入」の主張を、概念と関係(エッジ)に分解した知識グラフの全体です。各関係には根拠・確認日・確度が付いています。
この記事は、PowerShell公式の静的解析モジュールPSScriptAnalyzerを社内スクリプトへ導入する実務手順を扱う。PSScriptAnalyzerSettings.psd1という1つの設定ファイルをリポジトリに置くことで、VS Codeの拡張機能とGitHub ActionsのCIが同じ基準で解析するように整える。重大度はルールごとに決まっており、平文パスワード検出などのルールはError指定だけでは素通りするため、資格情報系のルールは名前を明示してCIの失敗条件に加えるべきだとしている。既存資産には、まずErrorをゼロにし、次に変更ファイルだけを厳格に解析する段階導入を勧め、テストを書かずに初日から効果が出るPSScriptAnalyzerをPesterより先に導入する順序を推奨している。
flowchart LR
accTitle: PSScriptAnalyzer導入とCI化の知識マップ
accDescr: PSScriptAnalyzerがInvoke-ScriptAnalyzerや設定ファイルを介してVS CodeとGitHub Actionsの双方に基準をそろえ、重大度に関係なく落とすべきルールを名指しし、段階導入を経てPesterより先に効果を出す様子を示す図。
psscriptanalyzer["PSScriptAnalyzer"]
github_actions["GitHub Actions"]
invoke_scriptanalyzer["Invoke-ScriptAnalyzer"]
suppressmessageattribute["SuppressMessageAttribute"]
psscriptanalyzer_settings["PSScriptAnalyzerSettings.psd1"]
vscode_powershell_extension["VS CodeのPowerShell拡張機能"]
psavoidusingplaintextforpassword["PSAvoidUsingPlainTextForPassword"]
psusedeclaredvarsmorethanassignments["PSUseDeclaredVarsMoreThanAssignments"]
invoke_formatter["Invoke-Formatter"]
pester["Pester"]
psscriptanalyzer_staged_adoption["PSScriptAnalyzerの段階導入"]
changed_file_only_analysis["変更ファイルのみを対象にした差分解析"]
github_actions_fetch_depth_zero["actions/checkoutのfetch-depth: 0"]
github_base_ref["GITHUB_BASE_REF"]
psavoidusingconverttosecurestringwithplaintext["PSAvoidUsingConvertToSecureStringWithPlainText"]
psavoidusingusernameandpasswordparams["PSAvoidUsingUsernameAndPasswordParams"]
psscriptanalyzer_mustfix_rules["重大度に関係なく落とすルールの明示リスト"]
psscriptanalyzer -->|"利用する"| invoke_scriptanalyzer
psscriptanalyzer -->|"利用する"| suppressmessageattribute
psscriptanalyzer -->|"で構成できる"| psscriptanalyzer_settings
vscode_powershell_extension -->|"利用する"| psscriptanalyzer
vscode_powershell_extension -->|"で構成できる"| psscriptanalyzer_settings
github_actions -.->|"利用する"| invoke_scriptanalyzer
psscriptanalyzer -->|"利用する"| psavoidusingplaintextforpassword
psscriptanalyzer -->|"利用する"| psusedeclaredvarsmorethanassignments
invoke_scriptanalyzer -->|"利用する"| invoke_formatter
psscriptanalyzer -->|"より先に行うべき"| pester
psscriptanalyzer_staged_adoption -->|"前提とする"| psscriptanalyzer
psscriptanalyzer_staged_adoption -->|"前提とする"| changed_file_only_analysis
changed_file_only_analysis -.->|"前提とする"| github_actions_fetch_depth_zero
changed_file_only_analysis -.->|"前提とする"| github_base_ref
changed_file_only_analysis -.->|"利用する"| github_actions
changed_file_only_analysis -->|"利用する"| invoke_scriptanalyzer
psscriptanalyzer -->|"利用する"| psavoidusingconverttosecurestringwithplaintext
psscriptanalyzer -->|"利用する"| psavoidusingusernameandpasswordparams
psscriptanalyzer_mustfix_rules -->|"前提とする"| psavoidusingplaintextforpassword
psscriptanalyzer_mustfix_rules -->|"前提とする"| psavoidusingconverttosecurestringwithplaintext
psscriptanalyzer_mustfix_rules -->|"前提とする"| psavoidusingusernameandpasswordparams
github_actions -.->|"利用する"| psscriptanalyzer_mustfix_rules
概念間の関係(全22件)
図と同じ関係を文章でも列挙します。表示している文と機械可読な意味データ(RDFa)は同じ要素に載っています。確度が「確立した関係」のものは直接の関係として、「条件付きの関係」のものは成立条件つきの言明(rdf:Statement)として表現しています。
- PSScriptAnalyzerはInvoke-ScriptAnalyzerを利用します。
- PSScriptAnalyzerはSuppressMessageAttributeを利用します。
- PSScriptAnalyzerはPSScriptAnalyzerSettings.psd1で構成できます。
- VS CodeのPowerShell拡張機能はPSScriptAnalyzerを利用します。
- VS CodeのPowerShell拡張機能はPSScriptAnalyzerSettings.psd1で構成できます。
- GitHub ActionsはInvoke-ScriptAnalyzerを利用します。
- PSScriptAnalyzerはPSAvoidUsingPlainTextForPasswordを利用します。
- PSScriptAnalyzerはPSUseDeclaredVarsMoreThanAssignmentsを利用します。
- Invoke-ScriptAnalyzerはInvoke-Formatterを利用します。
- PSScriptAnalyzerはPesterより先に行うべきです。
- PSScriptAnalyzerの段階導入はPSScriptAnalyzerを前提とします。
- PSScriptAnalyzerの段階導入は変更ファイルのみを対象にした差分解析を前提とします。
- 変更ファイルのみを対象にした差分解析はactions/checkoutのfetch-depth: 0を前提とします。
- 変更ファイルのみを対象にした差分解析はGITHUB_BASE_REFを前提とします。
- 変更ファイルのみを対象にした差分解析はGitHub Actionsを利用します。
- 変更ファイルのみを対象にした差分解析はInvoke-ScriptAnalyzerを利用します。
- PSScriptAnalyzerはPSAvoidUsingConvertToSecureStringWithPlainTextを利用します。
- PSScriptAnalyzerはPSAvoidUsingUsernameAndPasswordParamsを利用します。
- 重大度に関係なく落とすルールの明示リストはPSAvoidUsingPlainTextForPasswordを前提とします。
- 重大度に関係なく落とすルールの明示リストはPSAvoidUsingConvertToSecureStringWithPlainTextを前提とします。
- 重大度に関係なく落とすルールの明示リストはPSAvoidUsingUsernameAndPasswordParamsを前提とします。
- GitHub Actionsは重大度に関係なく落とすルールの明示リストを利用します。
主要概念の定義
機械可読データ
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。