Regra de Linter - use o operador de acesso seguro
Esta regra procura o uso da função para verificar a contains()
existência da propriedade antes do acesso e fornece uma substituição automática mais simples. Ele serve para recomendar e apresentar aos usuários uma sintaxe equivalente simplificada sem introduzir alterações funcionais no código. Para obter mais informações, consulte Operador de desreferência segura.
Os padrões específicos que procura são:
Operador ternário para verificar o acesso à propriedade:
contains(<object>, '<property>') ? <object>.<property> : <default-value>
Sugere-se a seguinte substituição:
<object>.?<property> ?? <default-value>
Operador ternário para verificar o acesso à propriedade com nome variável:
contains(<object>, <property-name>) ? foo[<property-name>] : <default-value>
Sugere-se a seguinte substituição:
<object>[?<property-name>] ?? <default-value>
Código da regra de linha
Para personalizar as configurações da regra, use o seguinte valor no arquivo de configuração do Bicep:
use-safe-access
Solução
Aceite a ação de código do editor para executar automaticamente o refator.
Exemplos
Acesso à propriedade nomeada
O exemplo a seguir aciona a regra:
param foo object
var test = contains(foo, 'bar') ? foo.bar : 'baz'
Aceitar a ação de código resulta no seguinte Bíceps:
param foo object
var test = foo.?bar ?? 'baz'
Acesso à propriedade variável
O exemplo a seguir aciona a regra:
param foo object
param target string
var test = contains(foo, target) ? foo[target] : 'baz'
Aceitar a ação de código resulta no seguinte Bíceps:
param foo object
param target string
var test = foo[?target] ?? 'baz'
Não são problemas
Os exemplos a seguir não acionam a regra:
Diferença entre o imóvel a ser verificado e o acessado:
param foo object
var test = contains(foo, 'bar') ? foo.baz : 'baz'
Diferença entre a propriedade variável que está sendo verificada e acessada:
param foo object
param target string
param notTarget string
var test = contains(foo, target) ? bar[notTarget] : 'baz'
Próximos passos
Para obter mais informações sobre o linter, consulte Usar binter linter.