지속적 통합 (CI) 스타일 유효성 검사기는 LookML 스타일 린터를 사용하여 LookML 프로젝트 전반에 LookML 코딩 표준, 이름 지정 규칙, 구조적 권장사항을 적용합니다. 스타일 검사기는 구성 가능한 스타일 규칙에 따라 LookML 파일을 검사하여 팀이 깔끔하고 일관되며 가독성이 높은 코드베이스를 유지하도록 지원합니다.
스타일 검사기를 실행하려면 LookML 프로젝트 저장소의 루트 디렉터리에 lkmlstyle.yaml (또는 lkmlstyle.yml)라는 구성 파일을 추가해야 합니다. 스타일 린터 구성에 대한 자세한 내용은 이 페이지의 구성 파일 섹션을 참고하세요.
CI 스위트에서 스타일 유효성 검사기를 구성하고 실행하고 유효성 검사 출력을 보는 방법에 대한 자세한 내용은 지속적 통합 스위트 만들기, 지속적 통합 스위트 실행, CI 실행 결과 보기 문서 페이지를 참고하세요.
시작하기 전에
지속적 통합에서 스타일 검사기를 사용하려면 다음이 필요합니다.
- Looker 26.18 이상을 실행하고 CI 요구사항을 충족하며 CI가 사용 설정된 Looker 인스턴스
- Git 버전 제어로 구성된 LookML 프로젝트
- CI 스위트 설정에서 사용 설정된 스타일 검사기 전환 버튼 (스타일 검사기는 기본적으로 사용 중지되어 있음) 스타일 유효성 검사기를 사용 설정하면 증분 오류만 옵션이 기본적으로 사용 설정됩니다.
- LookML 프로젝트 저장소의 루트 디렉터리에 있는
lkmlstyle.yaml(또는lkmlstyle.yml) 구성 파일 이 페이지의 구성 파일 섹션을 참고하세요.
구성 파일
Looker CI에서 스타일 검사기를 실행하려면 구성 파일이 필요합니다. 스타일 검사기가 실행되면 LookML 프로젝트 저장소의 루트 디렉터리에서 다음 우선순위 순서로 구성 파일을 자동으로 확인합니다.
lkmlstyle.yamllkmlstyle.yml
두 파일이 모두 루트 디렉터리에 있는 경우 lkmlstyle.yaml가 우선 적용되며 lkmlstyle.yml는 무시됩니다.
lkmlstyle.yaml도 lkmlstyle.yml도 프로젝트 루트 디렉터리에 없고 API를 통해 전달된 맞춤 구성이 없으면 스타일 검증 실행이 "No style validator configuration provided" 오류와 함께 실패합니다.
기본 설정으로 25개의 표준 기본 제공 규칙을 모두 실행하려면 lkmlstyle.yaml 파일에서 다음 최소 구성 정보를 사용하면 됩니다.
schema_version: 1
ruleset_version: "all-v1.0"
그렇지 않으면 구성 파일을 맞춤설정할 수 있습니다. 구성 파일에는 다음 최상위 매개변수가 포함될 수 있습니다.
| 매개변수 | 유형 | 필수 여부 | 기본값 | 설명 |
|---|---|---|---|---|
schema_version |
정수 | 예 | 없음 | 구성 스키마 버전입니다. 버전 1만 지원되며 명시적으로 지정해야 합니다. |
ruleset_version |
문자열 | 예 | 없음 | 상속할 기준 규칙 세트 버전입니다. 지원되는 값은 "all-v1.0", "none"입니다. |
ignore_files |
문자열 목록 | 아니요 | [] |
스타일 검사에서 완전히 제외할 파일의 glob 패턴입니다. |
rules |
지도 | 아니요 | {} |
개별 규칙의 전역 맞춤설정 (severity 및 version) 기준 규칙 세트에 포함되지 않은 기본 제공 규칙을 사용 설정하고 맞춤 규칙의 심각도를 변경할 수도 있습니다. 예는 규칙 맞춤설정 섹션을 참고하세요. |
overrides |
List of maps | 아니요 | [] |
특정 일치 파일 경로의 심각도를 조정하거나 사용 설정하는 범위가 지정된 규칙 재정의입니다. |
custom_rules |
List of maps | 아니요 | [] |
선언적 사용자 정의 맞춤 규칙입니다. |
ruleset_version
ruleset_version 파라미터는 스타일 검사 전략의 기반을 정의합니다.
"all-v1.0"(권장):error심각도 수준에서 25개의 모든 표준 내장 LookML 스타일 규칙을 활성화합니다. 이 옵션은 포괄적인 품질 시행을 기본적으로 원하는 팀에 적합합니다."none": 사용 설정된 내장 규칙이 0개로 시작합니다. 이 옵션은 스타일 검증을 점진적으로 채택하거나, 특정 규칙을 하나씩 선택하거나, 맞춤 조직 규칙만 실행하려는 팀에 적합합니다.ruleset_version가"none"인 경우 기본 제공 규칙을 선택하려면rules블록 또는overrides블록에서 규칙에warn또는error심각도를 할당합니다.
ignore_files
ignore_files 매개변수는 스타일 검사 중에 완전히 우회하려는 파일의 glob 패턴 목록을 허용합니다. 이러한 패턴과 일치하는 파일은 기본 제공 규칙이나 맞춤 규칙에 대해 검사되지 않습니다.
지원되는 와일드 카드 문법은 다음과 같습니다.
*: 단일 디렉터리 수준 내에서 구분자가 아닌 모든 문자 시퀀스와 일치합니다.**: 여러 중첩된 디렉터리 수준에서 모든 문자 시퀀스와 일치합니다.?: 단일 문자와 일치합니다.{a,b}및[abc]: 대안 및 문자 클래스 (Java glob 문법)와 일치합니다.
다음 경로 일치 규칙은 최상위 ignore_files뿐만 아니라 overrides의 files 및 ignore_files를 포함하여 구성 파일의 모든 glob 패턴에 적용됩니다.
- 경로는 프로젝트 루트 디렉터리를 기준으로 합니다. 앞에 오는
./또는/는 무시됩니다. - 슬래시 (
/)가 없는 패턴은 모든 디렉터리 깊이에서 일치합니다. 예를 들어*.ignore.lkml은x.ignore.lkml및views/x.ignore.lkml모두와 일치합니다. /로 끝나는 패턴은 해당 디렉터리 아래의 모든 항목과 일치합니다..lkml또는.lookml로 끝나는 패턴은 복합 확장 프로그램과도 일치합니다. 예를 들어*.ignore.lkml은x.ignore.view.lkml과 일치합니다.
다음 예에서는 공급업체 파일, 기존 LookML 파일, LookML 대시보드를 제외합니다.
ignore_files:
- "vendor/**"
- "legacy/**/*.lkml"
- "*.ignore.lkml"
- "dashboards/*.dashboard.lookml"
rules
rules 블록을 사용하여 전체 프로젝트에서 개별 규칙의 진단 심각도를 조정할 수 있습니다.
rules:
boolean-dimension-name-prefix:
severity: warn
view-dimension-order:
severity: disabled
numeric-measure-value-format-presence:
severity: error
심각도가 warn 또는 error인 rules (또는 overrides 블록)에 나열된 기본 제공 규칙은 ruleset_version이 "none"로 설정된 경우에도 활성 상태입니다. 예를 들어 다음 시작 구성은 ruleset_version: "none"로 시작하고 두 개의 기본 제공 규칙만 사용 설정합니다.
schema_version: 1
ruleset_version: "none"
rules:
join-relationship-presence:
severity: error
explore-label-presence:
severity: warn
rules 블록을 사용하여 이름을 참조하여 맞춤 규칙의 심각도를 변경할 수도 있습니다.
severity
각 규칙은 다음 대소문자를 구분하지 않음 심각도 수준 중 하나로 구성할 수 있습니다.
error: 심각한 위반으로 간주됩니다. 오류로 인해 CI 실행이 실패합니다.warn: 차단되지 않는 경고로 내보내집니다. 경고는 CI 실행 보고서에 표시되지만 CI 실행이 실패하지는 않습니다.disabled: 규칙을 완전히 비활성화하고 검증 중에 건너뜁니다.
overrides
overrides 매개변수를 사용하여 LookML 프로젝트의 나머지 부분에서 심각도를 변경하지 않고 특정 파일 또는 디렉터리의 규칙 심각도를 수정할 수 있습니다. 예를 들어 overrides를 사용하여 스테이징 뷰 또는 기존 모델의 규칙을 완화하거나, 중요 경로의 규칙을 강화하거나, ruleset_version이 "none"인 경우 특정 디렉터리에 대해서만 특정 규칙을 사용 설정할 수 있습니다.
overrides 목록의 각 항목은 다음 필드를 지원합니다.
| 필드 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
files |
문자열 목록 | 예 | 이 재정의 블록이 적용되는 파일과 일치하는 glob 패턴입니다. 비워둘 수 없습니다. |
ignore_files |
문자열 목록 | 아니요 | 이 특정 재정의 블록에서 제외할 glob 패턴입니다. |
rules |
지도 | 예 | 규칙 이름과 심각도 구성의 맵입니다. 비워둘 수 없습니다. 재정의 블록에서는 severity만 허용되며 필수입니다. 규칙 이름은 유효한 내장 또는 맞춤 규칙 이름이어야 합니다. |
다음 예에서는 기존 뷰 및 대시보드의 경우 측정기준 순서 지정 검사를 사용 중지하고 누락된 설명 오류를 경고로 다운그레이드합니다.
overrides:
- files:
- "views/legacy/**"
- "dashboards/*.dashboard.lookml"
ignore_files:
- "views/legacy/core_*.view.lkml"
rules:
view-dimension-order:
severity: disabled
visible-dimension-description-presence:
severity: warn
custom_rules
구성 파일의 custom_rules 섹션에서 선언적 맞춤 규칙을 정의하여 조직별 명명 규칙, 필수 아키텍처 패턴, 구조적 거버넌스를 적용할 수 있습니다.
모든 맞춤 규칙 정의는 다음 공통 매개변수를 지원합니다.
| 필드 | 유형 | 필수 여부 | 설명 |
|---|---|---|---|
name |
문자열 | 예 | 관례에 따라 대시 케이스 형식의 고유 식별자입니다(예: finance-measure-prefix). 기본 제공 규칙 이름 또는 기타 맞춤 규칙과 충돌해서는 안 됩니다. |
title |
문자열 | 예 | 위반이 발생했을 때 신고되는 인간이 읽을 수 있는 메시지입니다. (<rule-name>) <title> 형식입니다. |
rule_type |
문자열 | 예 | 규칙의 원형입니다(pattern_match, property, order, first_child 또는 unique). 대소문자를 구분하지 않습니다. pattern은 pattern_match의 별칭으로 허용됩니다. |
severity |
문자열 | 아니요 | 진단 수준: error (기본값), warn 또는 disabled rules 및 overrides에 의해 재정의될 수 있습니다. |
rationale |
문자열 | 아니요 | 규칙이 존재하는 이유를 문서화합니다. |
select |
문자열 또는 목록 | 아니요 | 타겟의 추상 구문 트리(AST) 노드 경로입니다(예: "view.dimension", "explore", ["dimension", "dimension_group"]). 생략하면 규칙이 filters와 일치하는 모든 노드를 타겟팅합니다. |
filters |
지도 | 아니요 | 타겟팅된 노드와 일치해야 하는 속성 필터입니다(예: primary_key: true). |
parent_filters |
지도 | 아니요 | 타겟 노드의 직계 상위 요소와 일치해야 하는 속성 필터입니다. |
각 규칙 유형은 자체 유형별 키만 허용합니다. 알 수 없는 키 또는 다른 규칙 유형에 속하는 키 (예: pattern_match 규칙의 order_by)는 구성 오류를 초래합니다.
select
select 매개변수는 맞춤 규칙이 평가하는 LookML 요소를 결정합니다.
- 직접 요소:
select: "dimension",select: "measure",select: "view",select: "explore",select: "join",select: "model"또는select: "include"과 같은 특정 LookML 요소 유형을 타겟팅합니다. - 중첩된 상위-하위 경로:
select: "view.dimension"(뷰 내에 정의된 측정기준) 또는select: "explore.join"(Explore 내에 정의된 조인)와 같은 특정 직계 상위 요소 내에 정의된 요소를 타겟팅합니다. 상위 요소는 직계 상위 요소여야 하며 경로의 마지막 두 세그먼트만 사용됩니다 (따라서a.b.c는b.c처럼 동작함). - 여러 타겟: 쉼표로 구분된 문자열 또는 목록(예:
select: "dimension, dimension_group"또는select: ["dimension", "dimension_group"])을 사용하여 여러 요소 유형을 타겟팅합니다.
선택기, 필터, 하위 이름은 정확한 대소문자 구분 LookML 키워드입니다. 이름의 철자가 틀린 경우 구성 오류로 보고되지 않으며 규칙이 일치하지 않습니다.
filters 및 parent_filters
filters 및 parent_filters를 사용하여 LookML 파일에 명시적으로 선언된 LookML 속성을 기반으로 타겟팅된 노드를 세분화할 수 있습니다.
- 불리언 동등성:
primary_key: true또는hidden: true과 같이 명시적으로 선언된 불리언 속성을 일치시킵니다. - 문자열 동일성:
type: "yesno"또는type: "count"과 같은 정확한 문자열 값을 일치시킵니다. - 목록 중 하나:
type: ["string", "number", "date"]와 같은 목록의 값과 일치합니다. - 존재 여부 확인:
derived_table: ""와 같은 빈 문자열을 전달하여 블록 또는 속성이 있는지 확인합니다. - 부정: 키 또는 값 앞에
!를 추가하여 필터를 부정합니다. 부정된 키는 따옴표로 묶어야 합니다. 따옴표로 묶이지 않은 선행!는 YAML 태그 구문이므로 구성 파일의 파싱이 실패합니다."!hidden": true또는hidden: "!true"는hidden를 선언하지 않는 필드를 포함하여 표시되는 (숨겨지지 않은) 항목과 일치합니다.type: ["!yesno", "!date"]은yesno도date도 아닌 유형과 일치합니다.
rule_type
각 맞춤 규칙은 rule_type 매개변수에 대해 다음 다섯 가지 규칙 원형 중 하나를 지정해야 합니다.
pattern_match
LookML 항목 이름 또는 속성 값에 정규 표현식 패턴을 적용합니다. match 또는 should_not_match 중 하나만 지정해야 합니다. 둘 다 설정된 경우 match만 적용되고 should_not_match는 자동으로 무시됩니다.
match(문자열, 정규 표현식): 타겟이 일치해야 하는 패턴입니다.should_not_match(문자열, 정규 표현식): 타겟이 일치해서는 안 되는 패턴입니다.
패턴은 구성 파일이 로드될 때 검증되는 Java 정규 표현식입니다. 일치는 고정되지 않습니다 (하위 문자열 일치). 예를 들어 match: "fin_"는 my_fin_total로 전달됩니다. ^ 및 $를 사용하여 전체 값을 일치시킵니다.
select가 항목 대신 속성을 타겟팅하는 경우 (예: select: "measure.sql" 또는 select: "dimension.label") 정규 표현식은 항목 이름이 아닌 속성의 값에 대해 평가됩니다. 기본 제공 measure-sql-table-reference 및 dimension-label-redundant-yes-no 규칙은 이러한 방식으로 작동합니다.
통화 측정항목이 _usd 또는 _eur로 끝나도록 강제하는 예:
- name: currency-measure-suffix
title: "Currency measures must end with a currency code like _usd or _eur"
rule_type: pattern_match
severity: error
select: "view.measure"
filters:
value_format_name: ["usd", "usd_0", "eur", "eur_0"]
match: "^.*_(usd|eur)$"
임시 또는 초안 측정기준을 금지하는 예:
- name: forbid-temporary-dimensions
title: "Dimensions must not start with 'tmp_' or 'test_'"
rule_type: pattern_match
severity: error
select: "dimension"
should_not_match: "^(tmp|test)_.*"
property
LookML 객체 내에서 특정 하위 속성의 필수 존재 또는 금지를 적용합니다. requires_child 또는 forbidden_child 중 하나만 지정해야 합니다. 둘 다 설정된 경우 requires_child만 적용되고 forbidden_child는 자동으로 무시됩니다.
requires_child(문자열 또는 목록): 있어야 하는 하위 속성 이름입니다. 목록을 지정하면 목록에 있는 하위 요소 중 하나라도 있으면 규칙이 충족됩니다.forbidden_child(문자열 또는 목록): 있으면 안 되는 하위 속성 이름입니다. 목록을 지정하면 나열된 하위 요소 중 하나라도 있으면 노드에 플래그가 지정됩니다.child_filters(지도, 선택사항): 필수 하위 요소가 충족해야 하는 추가 속성 필터입니다.
표시되는 모든 측정기준에 설명이 필요한 예:
- name: require-visible-dimension-description
title: "Visible dimensions must specify a description"
rule_type: property
severity: warn
select: "view.dimension"
filters:
"!hidden": true
requires_child: "description"
파생 테이블에서 sql_table_name을 금지하는 예:
- name: forbid-sql-table-name-on-derived-views
title: "Derived table views cannot specify sql_table_name"
rule_type: property
severity: error
select: "view"
filters:
derived_table: ""
forbidden_child: "sql_table_name"
order
컨테이너 내에서 동위 요소의 알파벳순 정렬을 강제합니다.
order_by(문자열, 필수): 순서를 지정할 형제 자식의 LookML 유형입니다. 일반적으로"dimension"또는"measure"입니다. 선택한 노드의 직접 하위 요소만 비교되며dimension_group하위 요소는"dimension"에 포함되지 않습니다.
이름은 문자 코드를 기준으로 대소문자를 구분하여 비교합니다. 대문자는 소문자보다 먼저 정렬되고 _는 그 사이에 정렬됩니다.
보기 내에서 측정기준을 알파벳순으로 나열해야 하는 예:
- name: custom-alphabetical-dimensions
title: "Dimensions must be kept in alphabetical order within views"
rule_type: order
severity: error
select: "view"
order_by: "dimension"
first_child
특정 필터와 일치하는 요소가 카테고리의 첫 번째 하위 요소로 표시되도록 강제합니다.
position(문자열, 선택사항): 위치 제약 조건입니다."first"여야 합니다 (기본값은"first").
first_child 규칙의 경우 select은 parent.child_type 형식(예: "view.dimension")을 사용해야 합니다. filters 매개변수는 먼저 표시되어야 하는 하위 요소를 식별하며, 선택되는 상위 노드를 좁히지는 않습니다. parent_filters 매개변수는 스키마에서 허용되지만 이 규칙 유형에서는 무시됩니다.
기본 키 측정기준을 뷰에서 먼저 선언해야 하는 예:
- name: custom-primary-key-first-dimension
title: "Primary key dimension must be the first dimension in the view"
rule_type: first_child
severity: error
select: "view.dimension"
filters:
primary_key: true
position: first
unique
CI 실행 중에 검증된 파일의 일치하는 모든 노드에서 속성 값의 고유성을 적용합니다.
unique_property(문자열, 필수): 일치하는 노드 간에 고유한 값이 있어야 하는 속성의 이름입니다(예:"sql_table_name"또는"label").
값은 정확한 문자열로 비교되며 첫 번째 발생과 모든 중복이 보고됩니다. 유효성 검사 실행에서 프로젝트 파일의 일부만 확인하는 경우 해당 하위 집합 외부의 파일에 있는 중복은 감지되지 않습니다.
모든 뷰에서 테이블 이름이 고유하도록 보장하는 예:
- name: custom-sql-table-name-uniqueness
title: "Each view must reference a unique sql_table_name"
rule_type: unique
severity: error
select: "view"
unique_property: "sql_table_name"
맞춤 규칙 제약 조건
맞춤 규칙을 만들 때는 다음 제약 조건을 준수하세요.
- 기본 제공 규칙 이름과 충돌 없음: 맞춤 규칙은
boolean-dimension-name-prefix또는sql-table-name-uniqueness와 같은 기본 제공 규칙 카탈로그의 이름을 재사용할 수 없습니다. - 고유한 맞춤 이름: 모든 맞춤 규칙에는
custom_rules목록 내에서 고유한 이름이 있어야 합니다. - 대시 케이스 형식: 규칙 이름은 대시 케이스 형식 (
lowercase-words-with-hyphens)을 사용해야 합니다.
구성 평가 순서
스타일 검사기가 LookML 파일을 평가할 때 구성 규칙은 다음 순서로 적용됩니다.
- 파일 제외: 파일이
ignore_files의 패턴과 일치하면 파일이 완전히 건너뜁니다. - 활성 규칙: 파일의 활성 규칙은
ruleset_version(all-v1.0또는none)의 규칙과rules또는 일치하는overrides블록에서warn또는error심각도가 할당된 모든 기본 제공 규칙,custom_rules에 정의된 모든 규칙으로 구성됩니다. - 심각도 해결: 활성 규칙마다 심각도를 지정하는 다음 설정 중 첫 번째 설정이 우선합니다. 마지막으로 일치하는
overrides블록, 전역rules블록, 맞춤 규칙의 자체severity, 마지막으로 기본 심각도 (error)입니다. - 사용 중지된 규칙: 해결된 심각도가
disabled인 규칙은 해당 파일에 대해 건너뜁니다.
구성 파일 예시
다음 예시에서는 기준 규칙 세트 선택, 파일 제외, 전역 규칙 맞춤설정, 범위 지정 재정의, 맞춤 규칙을 보여주는 완전한 lkmlstyle.yaml 파일을 보여줍니다.
# Schema version
schema_version: 1
# Baseline ruleset edition (all-v1.0 or none)
ruleset_version: "all-v1.0"
# Files completely ignored by the style validator
ignore_files:
- "vendor/**"
- "*.ignore.lkml"
- "legacy_dashboards/*.dashboard.lookml"
# Built-in rule customizations
rules:
view-dimension-order:
severity: warn
numeric-measure-value-format-presence:
severity: warn
sql-table-name-uniqueness:
severity: error
# Replaced by the custom first_child rule below
primary-key-first-dimension:
severity: disabled
# Directory/file scoped overrides
overrides:
- files:
- "views/staging/**"
rules:
visible-dimension-description-presence:
severity: disabled
primary-key-visibility:
severity: warn
# Custom rules catalog
custom_rules:
# 1. Pattern Match: Finance dimensions must start with fin_
- name: finance-dimension-prefix
title: "Finance dimensions must be prefixed with fin_"
rule_type: pattern_match
severity: error
rationale: "Ensures clarity in the field picker for finance metrics."
select: "view.dimension"
filters:
view_label: "Finance"
match: "^fin_[a-z0-9_]+$"
# 2. Pattern Match: Forbid draft or test views
- name: forbid-draft-views
title: "Views cannot be named with draft_ or test_ prefixes"
rule_type: pattern_match
severity: error
select: "view"
should_not_match: "^(draft|test)_.*"
# 3. Property: Require explicit relationship on joins
- name: require-join-relationship
title: "All joins must declare an explicit relationship"
rule_type: property
severity: error
select: "explore.join"
requires_child: "relationship"
# 4. Property: Explores must not use sql_always_where
- name: forbid-sql-always-where
title: "Explores should use always_filter instead of sql_always_where"
rule_type: property
severity: warn
select: "explore"
forbidden_child: "sql_always_where"
# 5. Order: Dimension groups inside views must be alphabetical
- name: view-dimension-groups-alphabetical
title: "Dimension groups must appear in alphabetical order within views"
rule_type: order
severity: warn
select: "view"
order_by: "dimension_group"
# 6. First Child: Primary key must be the first dimension
- name: custom-primary-key-first-dimension
title: "The primary key must be defined as the first dimension in the view"
rule_type: first_child
severity: error
select: "view.dimension"
filters:
primary_key: true
position: first
# 7. Unique: Views must not share the same label
- name: unique-view-labels
title: "Views must have unique labels"
rule_type: unique
severity: warn
select: "view"
unique_property: "label"
검증 범위 및 결과
다음 섹션에서는 스타일 유효성 검사기가 어떤 파일을 확인하고 유효성 검사 결과가 어떻게 보고되는지 설명합니다.
파일 검증됨
- 루트 프로젝트의
.lkml및.lookml파일만 검증됩니다. 가져온 (로컬 또는 원격) 종속 항목 프로젝트는 검증되지 않습니다. - 각 파일은 자체 콘텐츠를 기반으로 검증됩니다.
include:문이 따르지 않으며include:문을 통해 가져온 객체는 포함 파일의 일부로 검증되지 않습니다. - dbt Cloud CI 작업에 의해 트리거된 CI 실행은 개발 브랜치가 아닌 프로덕션 LookML 브랜치를 검증합니다.
통과 또는 실패 동작 및 출력
- 스타일 검사기 실행은 진단 중 하나 이상이
error심각도를 갖는 경우에만 실패합니다. 경고만으로는 실행이 실패하지 않습니다. - CI 실행 결과 페이지에서 각 진단 결과에는 규칙 이름, 경로, 줄 번호, 컨텍스트 스니펫, 규칙 문서 링크가 포함됩니다. 스위트 실행 및 결과 보기에 관한 자세한 내용은 지속적 통합 스위트 실행 및 CI 실행 결과 보기를 참고하세요.
- 잘못된 구성 파일은 1행의 구성 파일에 단일
invalid-config오류를 생성하고 검증 실행이 실패합니다.
증분 검사
지속적 통합 스위트를 만들거나 수정할 때 스타일 유효성 검사기 섹션에서 증분 오류만 체크박스 (기본적으로 사용 설정됨)를 선택하여 스타일 유효성 검사기의 증분 유효성 검사를 사용 설정할 수 있습니다.
증분 검증이 사용 설정되면 스타일 검사기는 개발 브랜치에서 새로운 위반만 보고합니다.
- 개발 브랜치를 검증합니다.
- 개발 브랜치의 구성 파일을 사용하여 타겟 브랜치를 검증합니다.
- 타겟 브랜치에 아직 없는 위반사항만 보고합니다.
증분 검증이 사용 설정된 경우 다음 동작에 유의하세요.
- 대상 브랜치에 기존 위반이 있어도 실행이 실패하지는 않습니다.
- 개발 브랜치의 구성 파일은 두 브랜치를 모두 검증하는 데 사용되므로 개발 브랜치의 구성 변경사항은 기존 위반을 숨기거나 기존 LookML이 자체적으로 새로운 위반으로 표시되도록 할 수 없습니다.
- 개발 브랜치에는
lkmlstyle.yaml(또는lkmlstyle.yml) 구성 파일이 포함되어야 합니다. 그렇지 않으면 구성 누락 오류로 실행이 실패합니다.
증분 오류만이 사용 중지되면 검증된 브랜치에서 발견된 모든 위반이 보고됩니다.
기본 제공 규칙 카탈로그
다음 표에는 all-v1.0 규칙 세트에서 사용할 수 있는 25개의 표준 기본 제공 규칙이 모두 나열되어 있습니다.
문제 해결
다음 섹션에서는 스타일 유효성 검사기를 문제 해결할 때 발생하는 일반적인 구성 문제와 지원되는 구문 변형을 설명합니다.
구성 오류
구성 파일을 로드할 때 다음 문제가 거부되고 invalid-config 오류로 보고됩니다.
- 알 수 없는 최상위 키 또는 규칙 구성 내의 알 수 없는 키
schema_version또는ruleset_version가 누락되었거나 두 매개변수 중 하나의 값이 지원되지 않습니다.rule-name: warn와 같은 약식 스칼라 심각도입니다.files또는rules가 누락되거나 비어 있는 재정의 블록 또는severity가 없는 재정의 블록 내의 규칙 구성- 재정의 블록의 알 수 없는 규칙 이름
- 이름이 다른 맞춤 규칙 또는 기본 제공 규칙과 중복되는 맞춤 규칙
- 잘못된
rule_type에 사용된 유형별 키 (예:pattern_match규칙의order_by) - 잘못된 정규 표현식입니다.
order_by매개변수 (order규칙의 경우) 또는unique_property매개변수 (unique규칙의 경우)가 누락되었습니다.first(first_child규칙의 경우)이 아닌position값- 필터 키에 따옴표로 묶이지 않은 선행
!(예:!hidden: true)가 있습니다. 이는 잘못된 YAML 태그 구문이며 구성 파일의 파싱이 실패합니다.
무음 구성 문제
- 전역
rules블록에서 규칙 이름의 철자가 틀린 경우 자동으로 무시됩니다. select,filters,parent_filters,requires_child,forbidden_child또는order_by에서 LookML 유형 이름의 철자가 틀려도 오류가 발생하지 않습니다. 대신 규칙이 일치하지 않습니다 (또는requires_child의 경우 항상 실패함).match와should_not_match또는requires_child와forbidden_child를 모두 지정하는 경우: 각 쌍의 첫 번째 매개변수만 적용되고 두 번째 매개변수는 무시됩니다.first_child규칙에parent_filters를 지정해도 효과가 없으며 무시됩니다.- 필터는 LookML 기본값이 아닌 LookML 파일에 명시적으로 선언된 속성만 일치시킵니다 (필터링 문법 참고).
pattern_match규칙의 정규 표현식 패턴은^및$로 고정하지 않는 한 고정되지 않은 하위 문자열 일치입니다 (pattern_match참고).
허용되는 문법 변형
severity및rule_type값은 대소문자를 구분하지 않습니다.rule_type: pattern은pattern_match의 별칭으로 허용됩니다.ruleset_version의 선행 및 후행 공백은 무시됩니다.