KCL 프로그래밍 언어의 유효성 검사
소개
KCL(Kusion Configuration Language) 은 오픈 소스 제약 기반 레코드 및 기능 언어입니다. KCL은 성숙한 프로그래밍 언어 기술과 실습을 통해 수많은 복잡한 구성의 작성을 개선하고 구성에 대한 더 나은 모듈성, 확장성 및 안정성, 더 간단한 논리 작성, 빠른 자동화 및 우수한 생태적 확장성을 구축하기 위해 노력하고 있습니다.
전제 조건
KCL 설치:
KCL의 각 릴리스에는 다양한 OS 및 아키텍처가 포함되어 있습니다. 이러한 바이너리 버전은 Github 에서 수동으로 다운로드하여 설치 {install-location}/kclvm/bin하고 환경 PATH에 추가 할 수 있습니다.
export PATH=$PATH:{install-location}/kclvm/bin
KCL 코드를 사용하여 JSON/YAML과 같은 구성 형식을 생성하는 것 외에도 KCL은 JSON/YAML 데이터의 형식 유효성 검사도 지원합니다. KCL은 구성 언어로서 OpenAPI 의 거의 모든 기능을 다룹니다 .
KCL에서 구조 정의를 사용하여 구성 데이터의 유효성을 검사할 수 있습니다. 동시에 체크 블록을 통해 사용자 정의 제약 규칙을 지원하고, 스키마에 정의된 속성을 확인하고 검증하기 위한 검증 표현식을 스키마에 작성한다. 입력 JSON/YAML이 해당 스키마 구조 정의 및 제약 조건을 충족하는지 여부를 확인하는 것은 매우 명확하고 간단합니다 .
스키마에서 check키워드를 사용하여 모든 스키마 속성의 유효성 검사 규칙을 작성할 수 있습니다. 검사 블록의 각 줄은 조건식에 해당합니다. 조건이 충족되면 유효성 검사가 성공한 것입니다. 조건식 뒤에는 , "check error message"확인에 실패할 때 표시할 메시지를 나타낼 수 있습니다. 다음은 제약 조건 표현식이 있는 스키마의 예입니다.
import regex
schema Sample:
foo: str # Required, cannot be None/Undefined, and the type must be str
bar: int # Required, cannot be None/Undefined, and the type must be int
fooList: [int] # Required, cannot be None/Undefined, and the type must be int list
color: "Red" | "Yellow" | "Blue" # Required, literal union type, and must be one of "Red", "Yellow", "Blue".
id?: int # Optional, can be None/Undefined, the type must be int
check:
0 <= bar < 100 # bar must be greater than or equal to 0 and less than 100
0 < len(fooList) < 100 # fooList cannot be None/Undefined, and the length must be greater than 0 and less than 100
regex.match(foo, "^The.*Foo$") # regular expression matching
bar in range(100) # bar can only range from 1 to 99
bar in [2, 4, 6, 8] # bar can only take 2, 4, 6, 8
bar % 2 == 0 # bar must be a multiple of 2
all foo in fooList {
foo > 1
} # All elements in fooList must be greater than 1
any foo in fooList {
foo > 10
} # At least one element in fooList must be greater than 10
abs(id) > 10 if id # check expression with if guard, when id is not empty, the absolute value of id must be greater than 10
.
JSON 형식 파일이 있습니다 data.json.
{
"name": "Alice",
"age": "18",
"message": "This is Alice",
"data": {
"id": "1",
"value": "value1"
},
"labels": {
"key": "value"
},
"hc": [1, 2, 3]
}
schema User:
name: str
age: int
message?: str
data: Data
labels: {str:}
hc: [int]
check:
age > 10
schema Data:
id: int
value: str
$ kcl-vet data.json schema.k
Validate succuss!
향후 계획
KCL 유효성 검사 기능의 개선은 점차 "정적" 측면, 즉 컴파일 시간에 공식 유효성 검사 기능과 결합하여 데이터가 제약 조건을 충족하는지 여부, 제약 조건이 서로 충돌하는지 여부, 등, IDE를 통해 실시간으로 노출될 수 있습니다.
또한 KCL 모델 및 제약 조건을 패키지로 관리할 수 있을 것으로 예상합니다(이 패키지에는 KCL 파일만 있음). 예를 들어 Kubernetes 모델과 제약 조건을 즉시 사용할 수 있습니다. 사용자는 구성을 생성하거나 기존 구성을 확인할 수 있으며 KCL 상속을 통해 사용자가 원하는 모델과 제약 조건을 간단히 확장할 수 있습니다.
더 많은 문서
- KCL Github 레포:https://github.com/KusionStack/KCLVM
- KCL 웹사이트:https://kcl-lang.io/
- KCL의 구성 및 자동화:https:///dev-genius/configuration-automation-in-kcl-f355732d9f20

![연결된 목록이란 무엇입니까? [1 부]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































