Linter 규칙 - 안전 액세스 연산자 사용
이 규칙은 액세스하기 전에 속성 존재 여부를 확인하기 위해 contains()
함수의 사용을 찾고 더 단순한 자동 대체를 제공합니다. 기능적 코드를 변경하지 않고도 간소화된 동등 구문을 사용자에게 권장하고 소개하는 역할을 합니다. 자세한 내용은 안전한 역참조 연산자를 참조하세요.
찾고 있는 특정 패턴은 다음과 같습니다.
속성 액세스를 확인하는 3개로 구성된 연산자:
contains(<object>, '<property>') ? <object>.<property> : <default-value>
다음 대체가 제안됩니다.
<object>.?<property> ?? <default-value>
변수 이름의 속성 액세스를 확인하는 3개로 구성된 연산자:
contains(<object>, <property-name>) ? foo[<property-name>] : <default-value>
다음 대체가 제안됩니다.
<object>[?<property-name>] ?? <default-value>
Linter 규칙 코드
규칙 설정을 사용자 지정하려면 Bicep 구성 파일에서 다음 값을 사용합니다.
use-safe-access
솔루션
리팩터링을 자동으로 수행하려면 편집기 코드 작업을 수락합니다.
예제
명명된 속성 액세스
다음 예에서는 규칙을 트리거합니다.
param foo object
var test = contains(foo, 'bar') ? foo.bar : 'baz'
코드 작업을 수락하면 다음 Bicep이 생성됩니다.
param foo object
var test = foo.?bar ?? 'baz'
변수 속성 액세스
다음 예에서는 규칙을 트리거합니다.
param foo object
param target string
var test = contains(foo, target) ? foo[target] : 'baz'
코드 작업을 수락하면 다음 Bicep이 생성됩니다.
param foo object
param target string
var test = foo[?target] ?? 'baz'
문제가 아닌 경우
다음 예에서는 규칙을 트리거하지 않습니다.
확인되는 속성과 액세스되는 속성의 차이점:
param foo object
var test = contains(foo, 'bar') ? foo.baz : 'baz'
확인되는 변수 속성과 액세스되는 변수 속성의 차이점:
param foo object
param target string
param notTarget string
var test = contains(foo, target) ? bar[notTarget] : 'baz'
다음 단계
Linter에 관한 자세한 내용은 Bicep Linter 사용을 참조하세요.