PossibleIncorrectUsageOfAssignmentOperator

úroveň závažnosti : Informace

Popis

Toto pravidlo detekuje, kdy podmíněné příkazy používají === nebo místo PowerShell equality operátoru (-eq). Pravidlo hledá použití a === operátorů uvnitř if, elseif, while, a do-while tvrzení. V PowerShellu představuje =operátor přiřazení a -eqpředstavuje operátor porovnání rovnosti.

V mnoha programovacích jazycích představuje == operátor porovnání rovnosti. Když definujete == v PowerShell výrazu, včetně podmíněných příkazů, PowerShell zobrazí chybu, protože == není platná PowerShell syntaxe. Toto pravidlo vždy označuje použití v == podmíněných výrocích. Nicméně neoznačuje použití , = když pravá strana podmíněné funkce používá příkazy nebo výrazy.

V těchto případech je pravděpodobné, že použití operátoru přiřazení je záměrné. Tato konstrukce se často používá k stručnému přiřazení hodnoty proměnné nebo vlastnosti na levé straně a ověření , zda přiřazená hodnota odpovídá pravdivosti.

Implicitní potlačení pomocí stylu jazyka Clang

Existují vzácné případy, kdy je přiřazení proměnné uvnitř if tvrzení záměrné. Místo potlačování pravidla můžete naznačit, že úkol je záměrný, tím, že výraz zabalíte do dalších závorek. Výjimka platí, když $null se používá na levé straně, protože pro ni není vhodné použití. Příklad:

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

Příklad

Nesplňující

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

}

Kompatibilní

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
}