Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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']))
{
...
}