Linter kuralı - güvenli erişim işlecini kullanma

Bu kural, erişimden önce özellik varlığını denetlemek için işlevinin contains() kullanımını arar ve daha basit bir otomatik değiştirme sağlar. İşlevsel kod değişikliği yapmadan kullanıcıları basitleştirilmiş eşdeğer bir söz dizimi önermeye ve tanıtmaya hizmet eder. Daha fazla bilgi için bkz . Güvenli başvuru kaldırma işleci.

Aradığı belirli desenler şunlardır:

  • Özellik erişimini denetlemek için üçüncül işleç:

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

    Aşağıdaki değiştirme önerilir:

    <object>.?<property> ?? <default-value>
    
  • Değişken adlı özellik erişimini denetlemek için üçüncül işleç:

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

    Aşağıdaki değiştirme önerilir:

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

Linter kural kodu

Kural ayarlarını özelleştirmek için Bicep yapılandırma dosyasında aşağıdaki değeri kullanın:

use-safe-access

Çözüm

Yeniden düzenlemeyi otomatik olarak gerçekleştirmek için düzenleyici kodu eylemini kabul edin.

Örnekler

Adlandırılmış Özellik Erişimi

Aşağıdaki örnek kuralı tetikler:

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

Kod eyleminin kabullenmesi aşağıdaki Bicep'e neden olur:

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

Değişken Özellik Erişimi

Aşağıdaki örnek kuralı tetikler:

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

Kod eyleminin kabullenmesi aşağıdaki Bicep'e neden olur:

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

Sorun olmayanlar

Aşağıdaki örnekler kuralı tetiklemez:

denetlenen ve erişilen özellik arasındaki fark:

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

denetlenen ve erişilen değişken özelliği arasındaki fark:

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

Sonraki adımlar

Lint hakkında daha fazla bilgi için bkz . Bicep linter'i kullanma.