PSSA:在vscode powershell扩展中应用自定义规则

时间:2018-08-22 01:48:40

标签: powershell visual-studio-code vscode-extensions powershell-v5.0

我正在尝试使用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"
}

0 个答案:

没有答案