Megosztás a következőn keresztül:


Linter szabály – a biztonságos hozzáférés operátorának használata

Ez a szabály a függvény használatát keresi a contains() tulajdonság meglétének hozzáférés előtti ellenőrzéséhez, és egyszerűbb automatikus cserét biztosít. Arra szolgál, hogy a felhasználókat egy egyszerűsített egyenértékű szintaxisra javasolja és vezesse be anélkül, hogy funkcionális kódmódosításokat vezet be. További információ: Biztonságos hareferencia-operátor.

A keresett minták a következők:

  • Ternáris operátor a tulajdonsághozzáférés ellenőrzéséhez:

    contains(<object>, '<property>') ? <object>.<property> : <default-value>
    

    A következő csere javasolt:

    <object>.?<property> ?? <default-value>
    
  • Változónevű tulajdonsághozzáférés ellenőrzésére szolgáló ternáris operátor:

    contains(<object>, <property-name>) ? foo[<property-name>] : <default-value>
    

    A következő csere javasolt:

    <object>[?<property-name>] ?? <default-value>
    

Linter-szabály kódja

A szabálybeállítások testreszabásához használja az alábbi értéket a Bicep konfigurációs fájljában:

use-safe-access

Megoldás

Fogadja el a szerkesztő kódműveletét az újrabontás automatikus végrehajtásához.

Példák

Névvel ellátott tulajdonsághozzáférés

A következő példa aktiválja a szabályt:

param foo object
var test = contains(foo, 'bar') ? foo.bar : 'baz'

A kódművelet elfogadása a következő Bicep-et eredményezi:

param foo object
var test = foo.?bar ?? 'baz'

Változótulajdonság-hozzáférés

A következő példa aktiválja a szabályt:

param foo object
param target string
var test = contains(foo, target) ? foo[target] : 'baz'

A kódművelet elfogadása a következő Bicep-et eredményezi:

param foo object
param target string
var test = foo[?target] ?? 'baz'

Nem problémák

A következő példák nem aktiválják a szabályt:

Különbség az ellenőrzött és a hozzáférés alatt álló tulajdonság között:

param foo object
var test = contains(foo, 'bar') ? foo.baz : 'baz'

Különbség az ellenőrzött és a hozzáférés alatt álló változótulajdonság között:

param foo object
param target string
param notTarget string
var test = contains(foo, target) ? bar[notTarget] : 'baz'

Következő lépések

A linterről további információt a Bicep-linter használata című témakörben talál.