Notatka
Dostęp do tej strony wymaga autoryzacji. Może 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
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
}