AlignAssignmentStatement

Nível de Gravidade: Aviso

Descrição

Essa regra detecta operadores de atribuição desalinhados em tabelas de hash e definições de enum. Instruções consecutivas de atribuição são mais fáceis de ler e manter quando seus operadores de atribuição se alinham verticalmente.

Essa regra verifica pares-chave-valor em hashtables e definições de membros enum para garantir que os = sinais estejam alinhados. Use essa regra para impor formatação consistente em tabelas hash multilinhas e definições de enum.

A regra ignora atribuições dentro de hashtables e enums que aparecem na mesma linha que outras atribuições. Por exemplo, a regra ignora $h = @{ a = 1; b = 2 }.

Example

Não Conforme

$hashtable = @{
    property = 'value'
    anotherProperty = 'another value'
}

enum Enum {
    member = 1
    anotherMember = 2
}

Em conformidade

$hashtable = @{
    property        = 'value'
    anotherProperty = 'another value'
}

enum Enum {
    member        = 1
    anotherMember = 2
}

Configuração

Rules = @{
    PSAlignAssignmentStatement = @{
        Enable                                  = $true
        CheckHashtable                          = $true
        AlignHashtableKvpWithInterveningComment = $true
        CheckEnum                               = $true
        AlignEnumMemberWithInterveningComment   = $true
        IncludeValuelessEnumMembers             = $true
    }
}

Parâmetros

Enable

Esse parâmetro controla se o ScriptAnalyzer verifica o código em relação a essa regra. Aceita um valor booleano. Para habilitar essa regra, defina esse parâmetro para $true. O valor padrão é $false.

CheckHashtable

Esse parâmetro controla se o ScriptAnalyzer verifica o alinhamento de atribuição em tabelas de hash e configurações de Desired State Configuration (DSC). Aceita um valor booleano. Para desativar essa verificação, defina esse parâmetro para $false. O valor padrão é $true.

AlignHashtableKvpWithInterinteringComment

Esse parâmetro controla se o ScriptAnalyzer inclui pares-chave-valor hashtable que contêm um comentário intermediário ao determinar o alinhamento. Aceita um valor booleano. Para excluir essas linhas, defina esse parâmetro para $false. O valor padrão é $true.

Considere o seguinte:

$hashtable = @{
    property = 'value'
    anotherProperty <#A Comment#> = 'another value'
    anotherDifferentProperty = 'yet another value'
}

Com essa configuração desativada, a linha com o comentário é ignorada. Os sinais iguais estão alinhados para as linhas restantes:

$hashtable = @{
    property                 = 'value'
    anotherProperty <#A Comment#> = 'another value'
    anotherDifferentProperty = 'yet another value'
}

Com essa configuração ativada, os sinais iguais são alinhados para todas as linhas:

$hashtable = @{
    property                      = 'value'
    anotherProperty <#A Comment#> = 'another value'
    anotherDifferentProperty      = 'yet another value'
}

CheckEnum

Esse parâmetro controla se o ScriptAnalyzer verifica o alinhamento de atribuição nas definições dos membros do enum. Aceita um valor booleano. Para desativar essa verificação, defina esse parâmetro para $false. O valor padrão é $true.

AlinharMembroEmEmComentário Intermediário

Esse parâmetro controla se o ScriptAnalyzer inclui membros enum que contêm um comentário intermediário ao determinar o alinhamento. Aceita um valor booleano. Para excluir essas linhas, defina esse parâmetro para $false. O valor padrão é $true.

IncluirMembrosInValorSem Valor

Esse parâmetro controla se o ScriptAnalyzer inclui membros de enum sem valores explicitamente atribuídos ao determinar o alinhamento. Aceita um valor booleano. Para excluir membros sem valor, defina esse parâmetro para $false. O valor padrão é $true.

Considere o seguinte:

enum Enum {
    member = 1
    anotherMember = 2
    anotherDifferentMember
}

Com essa configuração desativada, a terceira linha, que não tem valor, não é considerada ao escolher onde alinhar as atribuições.

enum Enum {
    member        = 1
    anotherMember = 2
    anotherDifferentMember
}

Com ele ativado, o membro sem valor é incluído no alinhamento como se tivesse um valor:

enum Enum {
    member                 = 1
    anotherMember          = 2
    anotherDifferentMember
}