Invoke-Formatter - Custom rules?
還沒有人認領這個 Issue。
評估
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 新手友好度
- 35/100
- Issue 類型
- 缺陷
- 描述清晰度
- 需要釐清
- 活躍度
- 停滯
- 技術堆疊
- powershell
- 領域
- tooling
研究方向
首先,使用 PSScriptAnalyzerSettings.psd1 對 C:\Temp\test.ps1 重現這兩個命令,比較詳細的規則探索結果與格式化輸出。追蹤報告中提到的 Invoke-ScriptAnalyzer 與 Invoke-Formatter 進入點。完成的標準是確定 Invoke-Formatter 是否支援自訂規則,並記錄或修正觀察到的行為。
由索引模型根據 Issue 內容生成。
描述
When I run through Invoke-ScriptAnalyzer[1], I find all of my expected violations and I see all of my custom rules running. However, when using the same settings file for Invoke-Formatter[2], it only seems to show one rule running (and not a custom one (PSAvoidUsingCmdletAliases ))
Any ideas what could be causing this? I thought Invoke-Formatter supproted custom rules too, but maybe this is not the case?
Output:
VERBOSE: Analyzing Script Definition.
VERBOSE: Running PSAvoidUsingCmdletAliases rule.
VERBOSE: Found 0 violations.
VERBOSE: Fixed 0 violations.
Notes:
PSScriptAnalyzer 1.21.0
Tested on both PowerShell 5.1 and PowerShell 7.2
Settings file content:
@{
# Use Severity when you want to limit the generated diagnostic records to a
# subset of: Error, Warning and Information.
# Uncomment the following line if you only want Errors and Warnings but
# not Information diagnostic records.
#Severity = @('Error','Warning')
CustomRulePath = 'C:\Users\redacted\Rules\*'
RecurseCustomRulePath = $true
IncludeDefaultRules = $true
# Use IncludeRules when you want to run only a subset of the default rule set.
#IncludeRules = @('PSAvoidDefaultValueSwitchParameter',
# 'PSMissingModuleManifestField',
# 'PSReservedCmdletChar',
# 'PSReservedParams',
# 'PSShouldProcess',
# 'PSUseApprovedVerbs',
# 'PSUseDeclaredVarsMoreThanAssigments')
# Use ExcludeRules when you want to run most of the default set of rules except
# for a few rules you wish to "exclude". Note: if a rule is in both IncludeRules
# and ExcludeRules, the rule will be excluded.
ExcludeRules = @(
'UseJSModuleImports',
'PSAvoidUsingWriteHost',
'PSUseShouldProcessForStateChangingFunctions',
'PSUseOutputTypeCorrectly'
#, 'PSAvoidGlobalVars'
)
# You can use the following entry to supply parameters to rules that take parameters.
# For instance, the PSAvoidUsingCmdletAliases rule takes a whitelist for aliases you
# want to allow.
Rules = @{
# Do not flag 'cd' alias.
PSAvoidUsingCmdletAliases = @{
Whitelist = @(
'cd',
'compare',
'foreach',
'group',
'measure',
'select',
'sort',
'tee',
'where'
)
}
# Alert for line length
PSAvoidLongLines = @{
Enable = $true
MaximumLineLength = 115
}
# Check if your script uses cmdlets that are compatible on PowerShell Core, version 6.0.0-alpha, on Linux.
# PSUseCompatibleCmdlets = @{Compatibility = @("core-6.0.0-alpha-linux")}
}
}
[1]
Invoke-ScriptAnalyzer -ScriptDefinition (Get-Content -Raw -Path C:\Temp\test.ps1) -Verbose -Settings "$rootPath\PSScriptAnalyzerSettings.psd1"
[2]
Invoke-Formatter -ScriptDefinition (Get-Content -Raw -Path C:\Temp\test.ps1) -Verbose -Settings "$rootPath\PSScriptAnalyzerSettings.psd1"
- 主要語言
- C#
- 星號
- 2.2k
- 分支
- 415
- 平均合併
- 13 小時 1 分鐘
- 30 天內合併 PR
- 2
環境準備
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
PowerShell/PSScriptAnalyzer 的其他 Issue
-
Up-for-Grabs
難度 1/5 1-3 小時 新手友好度 78/100
PowerShell/PSScriptAnalyzer#2213 · 2 則留言 ·
-
難度 3/5 1-2 天 新手友好度 72/100
PowerShell/PSScriptAnalyzer#2218 ·
-
難度 3/5 1-2 天 新手友好度 72/100
PowerShell/PSScriptAnalyzer#2217 · 1 則留言 ·
-
PSUseConsistentIndentation double-indents attribute bodies that open a scriptblock (`[Attr({ … })]`)未關閉
難度 3/5 1-2 天 新手友好度 70/100
PowerShell/PSScriptAnalyzer#2216 · 2 則留言 ·
-
難度 3/5 1-2 天 新手友好度 68/100
PowerShell/PSScriptAnalyzer#2211 ·
查看 PowerShell/PSScriptAnalyzer 的全部 Issue
相似的 Issue
-
bug
難度 2/5 1-3 小時 新手友好度 72/100
fluentassertions/fluentassertions#3353 ·
維護者通常 1 天內回覆
-
bug
難度 2/5 1-3 小時 新手友好度 65/100
-
難度 2/5 半天 新手友好度 78/100
unoplatform/uno#24769 ·
維護者通常 1 天內回覆
-
bug
難度 2/5 1-3 小時 新手友好度 75/100
AvaloniaUI/Avalonia#22323 ·
維護者通常 1 天內回覆
-
難度 2/5 1-3 小時 新手友好度 88/100
microsoft/onnxruntime-genai#2633 ·
維護者通常 1 天內回覆