Udostępnij za pomocą


PossibleIncorrectUsageOfAssignmentOperator

poziom ważności: informacje

Opis

W wielu językach programowania operator równości jest oznaczony jako == lub =, ale PowerShell używa -eq. W związku z tym może się zdarzyć, że niewłaściwy operator jest używany przypadkowo. Ta reguła przechwytuje kilka specjalnych przypadków, w których prawdopodobieństwo tego jest dość wysokie.

Reguła szuka użycia operatorów == i = wewnątrz if, else if, while i instrukcji do-while, ale nie ostrzega, czy jakikolwiek rodzaj polecenia lub wyrażenia jest używany po prawej stronie, ponieważ jest to prawdopodobnie celowe.

Przykład

Błędny

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

}

Poprawny

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
}

Niejawne pomijanie przy użyciu stylu języka Clang

Istnieją pewne rzadkie przypadki, w których przypisanie zmiennej wewnątrz instrukcji if jest zgodnie z projektem. Zamiast pomijać regułę, można również zasygnalizować, że przypisanie było zamierzone przez opakowywanie wyrażenia w nawiasy dodatkowe. Wyjątek dotyczy sytuacji, w przypadku gdy $null jest używana na serwerze LHS, ponieważ nie ma w tym przypadku użycia.

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