Поделиться через


AlignAssignmentStatement

Уровень тяжести: Предупреждение

Описание

Последовательные операторы присвоения более читаемы, когда они выровнены. Назначения считаются выровненными, если их equals знаки совпадают вертикально.

Это правило рассматривает пары ключ-значение в хэш-таблицах (включая конфигурации DSC), а также определения enum.

Рассмотрим следующий пример с хэшированной таблицей и enum, которые не выравниваются.

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

enum Enum {
    member = 1
    anotherMember = 2
}

В этом случае выравнивание будет выглядеть следующим образом.

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

enum Enum {
    member        = 1
    anotherMember = 2
}

Правило игнорирует любые назначения в хэш-таблицах и enum, которые находятся на той же строке, что и другие. Например, правило игнорирует $h = @{a = 1; b = 2}.

Конфигурация

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

Параметры

Включение: логическое значение (значение по умолчанию — $false)

Включите или отключите правило во время вызова ScriptAnalyzer.

CheckHashtable: bool (Значение по умолчанию )$true

Обеспечивать выравнивание операторов присвоения в хэш-таблице и в конфигурации DSC. Существует только одна настройка для конфигурации хэш-таблицы и DSC, поскольку пары значений свойств в конфигурации DSC парируются как пары ключ-значение в хэш-таблице.

AlignHashtableKvpWithInterveningComment: bool (Значение по умолчанию )$true

Включите в выравнивание пары ключ-значение, которые имеют промежуточный комментарий — то есть комментарий между именем ключа и знаком равенства.

Рассмотрим следующее:

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

При отключённой этой настройке строка с комментарием игнорируется, и она будет выровнена следующим образом:

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

При включении строка комментариев включена в выравнивание:

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

CheckEnum: bool (Значение по умолчанию )$true

Обеспечение согласования утверждений о присвоении определения Enum.

AlignEnumMemberWithInterveningComment: bool (Значение по умолчанию )$true

Включите членов enum в выравнивание, у которых есть промежуточный комментарий — то есть комментарий между именем участника и знаком равных.

Рассмотрим следующее:

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

При отключённой этой настройке строка с комментарием игнорируется, и она будет выровнена следующим образом:

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

При включении строка комментариев включена в выравнивание:

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

IncludeValuelessEnumMembers: bool (Значение по умолчанию )$true

Включите в выравнивание членов enum, которые не имеют явно присвоенного значения. Enum не обязательно иметь значение при их определении.

Рассмотрим следующее:

enum Enum {
    member = 1
    anotherMember = 2
    anotherDifferentMember
}

При отключении этой настройки третья строка, которая не имеет значения, не учитывается при выборе места выравнивания назначения. Он будет выровнен следующим образом:

enum Enum {
    member        = 1
    anotherMember = 2
    anotherDifferentMember
}

При включении элемент без значения включается в выравнивание так, как если бы у него было значение:

enum Enum {
    member                 = 1
    anotherMember          = 2
    anotherDifferentMember
}