Linter-regel: de operator voor veilige toegang gebruiken
Met deze regel wordt gezocht naar het gebruik van de contains()
functie voor het controleren van het bestaan van eigenschappen voordat de toegang wordt geopend en wordt een eenvoudigere automatische vervanging geboden. Het dient om gebruikers aan te bevelen en te introduceren in een vereenvoudigde equivalente syntaxis zonder dat er functionele codewijzigingen worden aangebracht. Zie de operator Veilige deductie voor meer informatie.
De specifieke patronen die u zoekt, zijn:
Ternary-operator om te controleren op toegang tot eigenschappen:
contains(<object>, '<property>') ? <object>.<property> : <default-value>
De volgende vervanging wordt voorgesteld:
<object>.?<property> ?? <default-value>
Ternary-operator om te controleren op toegang tot eigenschappen met variabele naam:
contains(<object>, <property-name>) ? foo[<property-name>] : <default-value>
De volgende vervanging wordt voorgesteld:
<object>[?<property-name>] ?? <default-value>
Linter-regelcode
Als u regelinstellingen wilt aanpassen, gebruikt u de volgende waarde in het Bicep-configuratiebestand:
use-safe-access
Oplossing
Accepteer de codeactie van de editor om de herstructurering automatisch uit te voeren.
Voorbeelden
Toegang tot benoemde eigenschappen
In het volgende voorbeeld wordt de regel geactiveerd:
param foo object
var test = contains(foo, 'bar') ? foo.bar : 'baz'
Het accepteren van de codeactie resulteert in de volgende Bicep:
param foo object
var test = foo.?bar ?? 'baz'
Toegang tot variabele eigenschap
In het volgende voorbeeld wordt de regel geactiveerd:
param foo object
param target string
var test = contains(foo, target) ? foo[target] : 'baz'
Het accepteren van de codeactie resulteert in de volgende Bicep:
param foo object
param target string
var test = foo[?target] ?? 'baz'
Niet-problemen
In de volgende voorbeelden wordt de regel niet geactiveerd:
Verschil tussen de eigenschap die wordt gecontroleerd en geopend:
param foo object
var test = contains(foo, 'bar') ? foo.baz : 'baz'
Verschil tussen de variabele-eigenschap die wordt gecontroleerd en geopend:
param foo object
param target string
param notTarget string
var test = contains(foo, target) ? bar[notTarget] : 'baz'
Volgende stappen
Zie Bicep linter gebruiken voor meer informatie over de linter.