Compartir a través de


AlignAssignmentStatement

Nivel de gravedad: Advertencia

Descripción

Las sentencias de asignación consecutivas son más legibles cuando están alineadas. Las asignaciones se consideran alineadas cuando sus equals signos están alineados verticalmente.

Esta regla analiza los pares clave-valor en tablas hash (incluyendo configuraciones DSC) así como definiciones de enum.

Considera el siguiente ejemplo con una tabla hash y un enum que no están alineados.

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

enum Enum {
    member = 1
    anotherMember = 2
}

En este caso, la alineación sería la siguiente.

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

enum Enum {
    member        = 1
    anotherMember = 2
}

La regla ignora cualquier asignación dentro de tablas hash y enums que estén en la misma línea que otras. Por ejemplo, la regla ignora $h = @{a = 1; b = 2}.

Configuración

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

Parámetros

Habilitar: bool (el valor predeterminado es $false)

Habilite o deshabilite la regla durante la invocación de ScriptAnalyzer.

CheckHashtable: bool (El valor por defecto es $true)

Hacer cumplir la alineación de las sentencias de asignación en una tabla hash y en una configuración DSC. Solo hay un ajuste para la configuración de tabla hash y DSC porque los pares de valor de propiedad en una configuración DSC se analizan como pares clave-valor de una tabla hash.

AlignHashtableKvpWithInterveningComment: bool (Valor por defecto es $true)

Incluye pares clave-valor en la alineación que tengan un comentario intermedio, es decir, un comentario entre el nombre clave y el signo de iguales.

Tenga en cuenta lo siguiente.

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

Con esta configuración desactivada, la línea con el comentario se ignora y se alinearía así:

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

Con ella activada, la línea de comentario se incluye en la alineación:

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

CheckEnum: bool (El valor por defecto es $true)

Hacer cumplir la alineación de las sentencias de asignación de una definición Enum.

AlignEnumMemberWithInterveningComment: bool (El valor predeterminado es $true)

Incluye a los miembros enum en la alineación que tengan un comentario intermedio, es decir, un comentario entre el nombre del miembro y el signo de iguales.

Tenga en cuenta lo siguiente.

enum Enum {
    member = 1
    anotherMember <#A Comment#> = 2
    anotherDifferentMember = 3
}

Con esta configuración desactivada, la línea con el comentario se ignora y se alinearía así:

enum Enum {
    member                 = 1
    anotherMember <#A Comment#> = 2
    anotherDifferentMember = 3
}

Con ella activada, la línea de comentario se incluye en la alineación:

enum Enum {
    member                      = 1
    anotherMember <#A Comment#> = 2
    anotherDifferentMember      = 3
}

IncludeValuelessEnumMembers: bool (El valor predeterminado es $true)

Incluye miembros de enum en el alineamiento que no tengan un valor explícitamente asignado. Los enum no necesitan tener un valor cuando se definen.

Tenga en cuenta lo siguiente.

enum Enum {
    member = 1
    anotherMember = 2
    anotherDifferentMember
}

Con esta configuración desactivada, la tercera línea, que no tiene valor, no se tiene en cuenta al elegir dónde alinear las asignaciones. Estaría alineado así:

enum Enum {
    member        = 1
    anotherMember = 2
    anotherDifferentMember
}

Con ella activada, el miembro sin valor se incluye en la alineación como si tuviera un valor:

enum Enum {
    member                 = 1
    anotherMember          = 2
    anotherDifferentMember
}