PossibleIncorrectUsageOfAssignmentOperator

Schweregrad: Informationen

Beschreibung

Diese Regel erkennt, wenn bedingte Anweisungen den PowerShell-Gleichheitsoperator () verwenden = oder == anstelle des PowerShell-Gleichheitsoperators (-eq). Die Regel sucht nach Verwendungen von == und = Operatoren innerhalb ifvon , elseif, while, und Anweisungen do-while . In PowerShell = stellt den Zuweisungsoperator dar und -eq den Gleichheitsvergleichsoperator.

In vielen Programmiersprachen stellt dies == den Gleichheitsvergleichsoperator dar. Wenn man in einem PowerShell-Ausdruck definiert == , einschließlich bedingter Anweisungen, erzeugt PowerShell einen Fehler, weil == PowerShell keine gültige Syntax ist. Diese Regel kennzeichnet immer die Verwendung von in == bedingten Anweisungen. Allerdings werden die Verwendungen nicht = markiert, wenn die rechte Seite der Bedingung Befehle oder Ausdrücke verwendet.

In diesen Fällen ist es wahrscheinlich, dass die Verwendung des Zuweisungsoperators beabsichtigt ist. Diese Konstruktion wird oft verwendet, um der Variablen oder Eigenschaft auf der linken Seite einen Wert zuzuordnen und zu prüfen, ob der zugewiesene Wert als wahr ausgewertet wird.

Implizite Unterdrückung mit Clang-Format

Es gibt einige seltene Fälle, in denen die Zuweisung einer Variablen innerhalb einer if Aussage beabsichtigt ist. Anstatt die Regel zu unterdrücken, kannst du signalisieren, dass die Zuweisung beabsichtigt ist, indem du den Ausdruck in zusätzliche Klammern wickelst. Eine Ausnahme gilt, wenn $null auf der linken Seite verwendet wird, da es keinen Anwendungsfall dafür gibt. Beispiel:

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

Beispiel

Nicht konform

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

}

Konform

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
}