Compartilhar via


PossibleIncorrectUsageOfAssignmentOperator

Nível de gravidade: de informações

Descrição

Em muitas linguagens de programação, o operador de igualdade é indicado como == ou =, mas PowerShell usa -eq. Portanto, pode acontecer facilmente que o operador errado seja usado sem querer. Esta regra captura alguns casos especiais em que a probabilidade disso é bastante alta.

A regra procura usos de operadores == e = dentro de instruções if, else if, while e do-while, mas não avisa se qualquer tipo de comando ou expressão é usado no lado direito, pois isso provavelmente é por design.

Exemplo

Errado

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

}

Correto

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
}

Supressão implícita usando o estilo Clang

Há alguns casos raros em que a atribuição de variável dentro de uma instrução if é por design. Em vez de suprimir a regra, também é possível sinalizar que a atribuição foi intencional encapsulando a expressão em parênteses extras. Uma exceção para isso é quando $null é usado no LHS porque não há nenhum caso de uso para isso.

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