Reguła lintera — używanie operatora bezpiecznego dostępu
Ta reguła wyszukuje użycie contains()
funkcji do sprawdzania istnienia właściwości przed uzyskaniem dostępu i zapewnia prostsze automatyczne zastępowanie. Służy do rekomendowania i wprowadzania użytkowników do uproszczonej składni równoważnej bez wprowadzania żadnych funkcjonalnych zmian kodu. Aby uzyskać więcej informacji, zobacz Bezpieczny operator dereference.
Konkretne wzorce, których szukasz, to:
Operator Ternary, aby sprawdzić dostęp do właściwości:
contains(<object>, '<property>') ? <object>.<property> : <default-value>
Sugerowane jest następujące zastąpienie:
<object>.?<property> ?? <default-value>
Operator Ternary, aby sprawdzić dostęp do właściwości o nazwie zmiennej:
contains(<object>, <property-name>) ? foo[<property-name>] : <default-value>
Sugerowane jest następujące zastąpienie:
<object>[?<property-name>] ?? <default-value>
Kod reguły Linter
Aby dostosować ustawienia reguły, użyj następującej wartości w pliku konfiguracji Bicep:
use-safe-access
Rozwiązanie
Zaakceptuj akcję kodu edytora, aby automatycznie wykonać refaktoryzację.
Przykłady
Nazwany dostęp do właściwości
Poniższy przykład wyzwala regułę:
param foo object
var test = contains(foo, 'bar') ? foo.bar : 'baz'
Zaakceptowanie akcji kodu powoduje wyświetlenie następującego Bicepu:
param foo object
var test = foo.?bar ?? 'baz'
Dostęp do właściwości zmiennej
Poniższy przykład wyzwala regułę:
param foo object
param target string
var test = contains(foo, target) ? foo[target] : 'baz'
Zaakceptowanie akcji kodu powoduje wyświetlenie następującego Bicepu:
param foo object
param target string
var test = foo[?target] ?? 'baz'
Niestanowiące problemu
Następujące przykłady nie wyzwalają reguły:
Różnica między sprawdzaną właściwością a dostępem:
param foo object
var test = contains(foo, 'bar') ? foo.baz : 'baz'
Różnica między sprawdzaną właściwością zmiennej a dostępem:
param foo object
param target string
param notTarget string
var test = contains(foo, target) ? bar[notTarget] : 'baz'
Następne kroki
Aby uzyskać więcej informacji na temat lintera, zobacz Use Bicep linter (Używanie lintera Bicep).