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


PossibleIncorrectUsageOfAssignmentOperator

уровень серьезности : сведения

Описание

Во многих языках программирования оператор равенства обозначается как == или =, но PowerShell использует -eq. Поэтому это может легко произойти, что неправильный оператор используется непреднамеренно. Это правило перехватывает несколько особых случаев, когда вероятность этого довольно высока.

Правило ищет использование операторов == и = внутри if, else if, while и do-while инструкций, но не предупреждает, используется ли какая-либо команда или выражение в правой части, так как это, вероятно, по проектированию.

Пример

Неправильный

if ($a = $b)
{
    ...
}
if ($a == $b)
{

}

Правильно

if ($a -eq $b) # Compare $a with $b
{
    ...
}
if ($a = Get-Something) # Only execute action if command returns something and assign result to variable
{
    Do-SomethingWith $a
}

Неявное подавление с помощью стиля Clang

Существуют некоторые редкие случаи, когда назначение переменной внутри оператора if выполняется по проектированию. Вместо подавления правила можно также сигнализировать о том, что назначение было намеренно, упаковав выражение в дополнительные скобки. Исключение для этого заключается в том, что $null используется в LHS, так как для этого нет варианта использования.

if (($shortVariableName = $SuperLongVariableName['SpecialItem']['AnotherItem']))
{
    ...
}