PossibleIncorrectUsageOfAssignmentOperator

poziom ważności: informacje

Opis

Ta reguła wykrywa, kiedy instrukcje warunkowe używają lub zamiast === operatora równości PowerShell (-eq). Reguła szuka zastosowań operatorów w === obrębie if, elseif, while, oraz do-while zdań. W PowerShell oznacza =, a -eqoperator porównania równości.

W wielu językach programowania oznacza == operator porównania równości. Gdy definiujesz == w wyrażeniu PowerShell, w tym w instrukcjach warunkowych, PowerShell zgłasza błąd, ponieważ == składnia PowerShell nie jest poprawna. Ta reguła zawsze oznacza użycie w == zdaniach warunkowych. Jednak nie oznacza użycia = , gdy prawa strona warunku używa jakichkolwiek poleceń lub wyrażeń.

W takich przypadkach prawdopodobnie użycie operatora przypisania jest celowe. Ta konstrukcja jest często używana do zwięzłego przypisania wartości zmiennej lub właściwości po lewej stronie i sprawdzenia, czy przypisana wartość jest uznana za prawdziwą.

Niejawne pomijanie przy użyciu stylu języka Clang

Są rzadkie przypadki, gdy przypisanie zmiennej wewnątrz if zdania jest celowe. Zamiast tłumić regułę, możesz zasygnalizować, że zadanie jest celowe, opakując wyrażenie dodatkowymi nawiasami. Wyjątek dotyczy $null użycia po lewej stronie, ponieważ nie ma dla niego zastosowania. Przykład:

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

Przykład

Niezgodne

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

}

Zgodne

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
}