我正在尝试使用vscode中的powershell进行自定义规则和代码格式化(使用Format Document
工具)。我已经阅读了很多PSScriptAnalyzer
和扩展文档,但是我不知道如何使它工作。
如果我手动运行
Invoke-ScriptAnalyzer .\Example.ps1 -CustomRulePath .\Rule.psm1
PSSA
识别违规。更改设置路径后,代码格式化仍然可以正常工作时,我没有得到任何突出显示。
我如何获得settingsPath
来使用自定义规则,并且有可能使用PSSA
来设置自定义代码格式(我见过这则广告,但没有相关文档/博客文章) ?
.\Example.ps1
function Get-MYVar {
param (
[string]$VariableName
)
$results = $null
Get-Variable -Name $VariableName
}
.\Rule.psm1
using module @{ModuleName = 'PSScriptAnalyzer'; ModuleVersion = '1.17'}
using namespace System.Management.Automation.Language
using namespace Microsoft.Windows.PowerShell.ScriptAnalyzer.Generic
function FunctionCasing
{
[CmdletBinding()]
[OutputType([DiagnosticRecord[]])]
param
(
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[ScriptBlockAst]
$ScriptBlockAst
)
try
{
@($ScriptBlockAst.FindAll({
$args[0] -is [FunctionDefinitionAst] -and
$args[0].Name -cmatch '[A-Z]{2,}'
}, $false)).ForEach({
[DiagnosticRecord]@{
Message = 'Avoid function names with adjacent caps in their name'
Extent = $PSItem.Extent
RuleName = $PSCmdlet.MyInvocation.InvocationName
Severity = 'Warning'
}
})
}
catch
{
$PSCmdlet.ThrowTerminatingError($PSItem)
}
}
Export-ModuleMember -Function FunctionCasing
.\Rule.psd1
@{
IncludeRules = @('Rule.psm1')
}
.\.vscode\settings.json
{
"powershell.scriptAnalysis.settingsPath": "..\\Rule.psd1"
}