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.