Validator Gaya Continuous Integration (CI) menerapkan standar coding LookML, konvensi penamaan, dan praktik terbaik struktural di seluruh project LookML Anda dengan menggunakan Linter Gaya LookML. Dengan memeriksa file LookML Anda berdasarkan serangkaian aturan gaya yang dapat dikonfigurasi, Validator Gaya membantu tim Anda mempertahankan codebase yang bersih, konsisten, dan mudah dibaca.
Untuk menjalankan Validator Gaya, Anda harus menambahkan file konfigurasi bernama lkmlstyle.yaml (atau lkmlstyle.yml) ke direktori root repositori project LookML Anda. Lihat bagian File konfigurasi di halaman ini untuk mengetahui detail tentang cara mengonfigurasi linter gaya.
Untuk mengetahui informasi tentang cara mengonfigurasi dan menjalankan Validator Gaya dalam rangkaian CI serta melihat output validasi, lihat halaman dokumentasi Membuat rangkaian Continuous Integration, Menjalankan rangkaian Continuous Integration, dan Melihat hasil eksekusi CI.
Sebelum memulai
Untuk menggunakan Validator Gaya di Integrasi Berkelanjutan, Anda memerlukan hal berikut:
- Instance Looker yang menjalankan Looker 26.18 atau yang lebih baru yang memenuhi persyaratan untuk CI dan diaktifkan untuk CI.
- Project LookML yang dikonfigurasi dengan kontrol versi Git.
- Tombol Validator Gaya diaktifkan di setelan rangkaian CI Anda (Validator Gaya dinonaktifkan secara default). Saat Anda mengaktifkan Validator Gaya, opsi Hanya error inkremental diaktifkan secara default.
- File konfigurasi
lkmlstyle.yaml(ataulkmlstyle.yml) di direktori root repositori project LookML Anda. Lihat bagian File konfigurasi di halaman ini.
File konfigurasi
File konfigurasi diperlukan untuk menjalankan Validator Gaya di CI Looker. Saat dijalankan, Validator Gaya akan otomatis memeriksa direktori root repositori project LookML Anda untuk menemukan file konfigurasi dalam urutan prioritas berikut:
lkmlstyle.yamllkmlstyle.yml
Jika kedua file ada di direktori root, lkmlstyle.yaml akan diprioritaskan dan lkmlstyle.yml akan diabaikan.
Jika lkmlstyle.yaml maupun lkmlstyle.yml tidak ditemukan di direktori root project (dan tidak ada konfigurasi kustom yang diteruskan melalui API), validasi gaya akan gagal dengan error "No style validator configuration provided".
Untuk menjalankan semua 25 aturan bawaan standar dengan setelan defaultnya, Anda dapat menggunakan informasi konfigurasi minimal berikut dalam file lkmlstyle.yaml:
schema_version: 1
ruleset_version: "all-v1.0"
Atau, Anda dapat menyesuaikan file konfigurasi. File konfigurasi dapat berisi parameter tingkat teratas berikut:
| Parameter | Jenis | Wajib? | Default | Deskripsi |
|---|---|---|---|---|
schema_version |
Bilangan bulat | Ya | Tidak ada | Versi skema konfigurasi. Versi 1 adalah satu-satunya versi yang didukung dan harus ditentukan secara eksplisit. |
ruleset_version |
String | Ya | Tidak ada | Edisi set aturan dasar yang akan diwarisi. Nilai yang didukung: "all-v1.0", "none". |
ignore_files |
Daftar string | Tidak | [] |
Pola glob file yang akan dikecualikan sepenuhnya dari validasi gaya. |
rules |
Peta | Tidak | {} |
Penyesuaian global (severity dan version) untuk setiap aturan. Juga dapat mengaktifkan aturan bawaan yang tidak disertakan dalam set aturan dasar, dan mengubah tingkat keparahan aturan kustom. Lihat bagian Penyesuaian aturan untuk melihat contohnya. |
overrides |
Daftar peta | Tidak | [] |
Penggantian aturan yang tercakup yang menyesuaikan atau mengaktifkan tingkat keparahan untuk jalur file yang cocok tertentu. |
custom_rules |
Daftar peta | Tidak | [] |
Aturan kustom deklaratif yang ditentukan pengguna. |
ruleset_version
Parameter ruleset_version menentukan dasar strategi validasi gaya Anda:
"all-v1.0"(Direkomendasikan): Mengaktifkan semua 25 aturan gaya LookML bawaan standar pada tingkat keparahanerror. Opsi ini ideal untuk tim yang menginginkan penerapan kualitas komprehensif langsung."none": Dimulai dengan nol aturan bawaan yang diaktifkan. Opsi ini ideal untuk tim yang ingin menerapkan validasi gaya secara bertahap, memilih untuk menggunakan aturan tertentu satu per satu, atau hanya menjalankan aturan organisasi kustom. Untuk memilih ikut serta dalam aturan bawaan saatruleset_versionadalah"none", tetapkan tingkat keparahanwarnatauerroruntuk aturan tersebut di blokrulesatau di blokoverrides.
ignore_files
Parameter ignore_files menerima daftar pola glob untuk file yang ingin Anda lewati sepenuhnya selama validasi gaya. File yang cocok dengan pola ini tidak diperiksa untuk aturan bawaan atau kustom.
Sintaksis karakter pengganti yang didukung mencakup hal berikut:
*: Mencocokkan urutan karakter non-pemisah apa pun dalam satu tingkat direktori.**: Cocok dengan urutan karakter apa pun di beberapa tingkat direktori bertingkat.?: Mencocokkan karakter tunggal apa pun.{a,b}dan[abc]: Mencocokkan alternatif dan class karakter (sintaksis glob Java).
Aturan pencocokan jalur berikut berlaku untuk setiap pola glob dalam file konfigurasi, termasuk ignore_files tingkat teratas serta files dan ignore_files dalam overrides:
- Jalur bersifat relatif terhadap direktori root project.
./atau/di awal akan diabaikan. - Pola tanpa garis miring (
/) cocok di kedalaman direktori mana pun. Misalnya,*.ignore.lkmlcocok denganx.ignore.lkmldanviews/x.ignore.lkml. - Pola yang diakhiri dengan
/cocok dengan semua hal di direktori tersebut. - Pola yang diakhiri dengan
.lkmlatau.lookmljuga cocok dengan ekstensi gabungan. Misalnya,*.ignore.lkmlcocok denganx.ignore.view.lkml.
Contoh berikut mengecualikan file vendor, file LookML lama, dan dasbor LookML:
ignore_files:
- "vendor/**"
- "legacy/**/*.lkml"
- "*.ignore.lkml"
- "dashboards/*.dashboard.lookml"
rules
Anda dapat menggunakan blok rules untuk menyesuaikan tingkat keparahan diagnostik setiap aturan di seluruh project Anda:
rules:
boolean-dimension-name-prefix:
severity: warn
view-dimension-order:
severity: disabled
numeric-measure-value-format-presence:
severity: error
Setiap aturan bawaan yang tercantum di rules (atau di blok overrides) dengan tingkat keparahan warn atau error akan aktif, meskipun ruleset_version disetel ke "none". Misalnya, konfigurasi awal berikut dimulai dengan ruleset_version: "none" dan hanya mengaktifkan dua aturan bawaan:
schema_version: 1
ruleset_version: "none"
rules:
join-relationship-presence:
severity: error
explore-label-presence:
severity: warn
Anda juga dapat menggunakan blok rules untuk mengubah tingkat keparahan aturan kustom dengan merujuk ke namanya.
severity
Setiap aturan dapat dikonfigurasi dengan salah satu tingkat keparahan yang tidak peka huruf besar/kecil berikut:
error: Dianggap sebagai pelanggaran berat. Error menyebabkan proses CI gagal.warn: Dipancarkan sebagai peringatan non-pemblokiran. Peringatan muncul dalam laporan eksekusi CI, tetapi tidak menyebabkan eksekusi CI gagal.disabled: Menonaktifkan aturan sepenuhnya dan melewatinya selama validasi.
overrides
Anda dapat menggunakan parameter overrides untuk mengubah tingkat keparahan aturan untuk file atau direktori tertentu tanpa mengubah tingkat keparahan di seluruh project LookML Anda. Misalnya, Anda dapat menggunakan overrides untuk melonggarkan aturan untuk tampilan staging atau model lama, memperketat aturan untuk jalur penting, atau mengaktifkan aturan tertentu hanya untuk direktori tertentu saat ruleset_version adalah "none".
Setiap entri dalam daftar overrides mendukung kolom berikut:
| Kolom | Jenis | Wajib? | Deskripsi |
|---|---|---|---|
files |
Daftar string | Ya | Pola glob yang cocok dengan file tempat blok penggantian ini diterapkan. Tidak boleh kosong. |
ignore_files |
Daftar string | Tidak | Pola glob yang akan dikecualikan dari blok penggantian spesifik ini. |
rules |
Peta | Ya | Peta nama aturan ke konfigurasi tingkat keparahan. Tidak boleh kosong. Hanya severity yang diizinkan (dan diperlukan) dalam blok penggantian. Nama aturan harus berupa nama aturan bawaan atau kustom yang valid. |
Contoh berikut menonaktifkan pemeriksaan pengurutan dimensi dan menurunkan error deskripsi yang tidak ada menjadi peringatan untuk dasbor dan tampilan lama:
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
Anda dapat menentukan aturan kustom deklaratif di bagian custom_rules pada file konfigurasi untuk menerapkan konvensi penamaan khusus organisasi, pola arsitektur yang diperlukan, dan tata kelola struktural.
Setiap definisi aturan kustom mendukung parameter umum berikut:
| Kolom | Jenis | Wajib? | Deskripsi |
|---|---|---|---|
name |
String | Ya | ID unik, dalam format dash-case berdasarkan konvensi, seperti finance-measure-prefix. Tidak boleh bertentangan dengan nama aturan bawaan atau aturan kustom lainnya. |
title |
String | Ya | Pesan yang dapat dibaca manusia yang dilaporkan saat terjadi pelanggaran, diformat sebagai (<rule-name>) <title>. |
rule_type |
String | Ya | Arketipe aturan: pattern_match, property, order, first_child, atau unique. Tidak peka huruf besar/kecil; pattern diterima sebagai alias untuk pattern_match. |
severity |
String | Tidak | Tingkat diagnostik: error (default), warn, atau disabled. Dapat diganti oleh rules dan overrides. |
rationale |
String | Tidak | Mendokumentasikan alasan aturan tersebut ada. |
select |
String atau daftar | Tidak | Jalur node abstract syntax tree (AST) ke target, seperti "view.dimension", "explore", atau ["dimension", "dimension_group"]. Jika tidak disertakan, aturan akan menargetkan setiap node yang cocok dengan filters. |
filters |
Peta | Tidak | Filter properti yang harus cocok pada node yang ditargetkan, seperti primary_key: true. |
parent_filters |
Peta | Tidak | Filter properti yang harus cocok dengan induk langsung dari node yang ditargetkan. |
Setiap jenis aturan hanya menerima kunci khusus jenisnya sendiri. Kunci yang tidak diketahui, atau kunci yang termasuk dalam jenis aturan yang berbeda (seperti order_by pada aturan pattern_match), akan menyebabkan error konfigurasi.
select
Parameter select menentukan elemen LookML mana yang dievaluasi oleh aturan kustom:
- Elemen langsung: Menargetkan jenis elemen LookML tertentu, seperti
select: "dimension",select: "measure",select: "view",select: "explore",select: "join",select: "model", atauselect: "include". - Jalur induk-turunan bertingkat: Menargetkan elemen yang ditentukan dalam induk langsung tertentu, seperti
select: "view.dimension"(dimensi yang ditentukan dalam tampilan) atauselect: "explore.join"(gabungan yang ditentukan dalam Eksplorasi). Induk harus berupa induk langsung, dan hanya dua segmen terakhir dari jalur yang digunakan (sehinggaa.b.cberperilaku sepertib.c). - Beberapa target: Menargetkan beberapa jenis elemen menggunakan string atau daftar yang dipisahkan koma, seperti
select: "dimension, dimension_group"atauselect: ["dimension", "dimension_group"].
Nama pemilih, filter, dan turunan adalah kata kunci LookML yang tepat dan peka huruf besar/kecil. Nama yang salah eja tidak dilaporkan sebagai error konfigurasi; sebagai gantinya, aturan tidak pernah cocok.
filters dan parent_filters
Anda dapat menggunakan filters dan parent_filters untuk menyempurnakan node yang ditargetkan berdasarkan properti LookML yang dideklarasikan secara eksplisit dalam file LookML.
- Kesamaan Boolean: Mencocokkan properti Boolean yang dideklarasikan secara eksplisit, seperti
primary_key: trueatauhidden: true. - Kesamaan string: Mencocokkan nilai string yang persis, seperti
type: "yesno"atautype: "count". - Daftar salah satu dari: Mencocokkan nilai apa pun dalam daftar, seperti
type: ["string", "number", "date"]. - Pemeriksaan kehadiran: Periksa apakah blok atau properti ada dengan meneruskan string kosong, seperti
derived_table: "". - Negasi: Tambahkan awalan
!pada kunci atau nilai untuk meniadakan filter. Kunci yang dinegasikan harus diapit tanda kutip karena!di awal yang tidak diapit tanda kutip adalah sintaksis tag YAML dan menyebabkan file konfigurasi gagal diuraikan:"!hidden": trueatauhidden: "!true"cocok dengan item yang terlihat (tidak tersembunyi), termasuk kolom yang tidak mendeklarasikanhidden.type: ["!yesno", "!date"]cocok dengan jenis yang bukanyesnomaupundate.
rule_type
Setiap aturan kustom harus menentukan salah satu dari lima arketipe aturan berikut untuk parameter rule_type:
pattern_match
Menerapkan pola ekspresi reguler pada nama entity LookML atau nilai properti. Anda harus menentukan tepat satu dari match atau should_not_match (jika keduanya ditetapkan, hanya match yang diterapkan dan should_not_match diabaikan tanpa pemberitahuan):
match(String, ekspresi reguler): Pola yang harus cocok dengan target.should_not_match(String, ekspresi reguler): Pola yang tidak boleh cocok dengan target.
Pola adalah ekspresi reguler Java yang divalidasi saat file konfigurasi dimuat. Pencocokan tidak berlabuh (kecocokan substring); misalnya, match: "fin_" lulus untuk my_fin_total. Gunakan ^ dan $ untuk mencocokkan seluruh nilai.
Jika select menargetkan properti, bukan entity (misalnya, select: "measure.sql" atau select: "dimension.label"), ekspresi reguler dievaluasi terhadap nilai properti, bukan nama entity. Aturan measure-sql-table-reference dan dimension-label-redundant-yes-no bawaan beroperasi dengan cara ini.
Contoh yang memastikan bahwa ukuran mata uang diakhiri dengan _usd atau _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)$"
Contoh yang melarang dimensi sementara atau draf:
- 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
Menerapkan kehadiran atau larangan wajib properti turunan tertentu dalam objek LookML. Anda harus menentukan tepat satu dari requires_child atau forbidden_child (jika keduanya ditetapkan, hanya requires_child yang diterapkan dan forbidden_child diabaikan tanpa pemberitahuan):
requires_child(String atau daftar): Nama atau nama properti turunan yang harus ada. Saat Anda menentukan daftar, aturan akan terpenuhi jika salah satu turunan yang tercantum ada.forbidden_child(String atau daftar): Nama atau nama properti turunan yang tidak boleh ada. Saat Anda menentukan daftar, node akan ditandai jika salah satu turunan yang tercantum ada.child_filters(Peta, opsional): Filter properti tambahan yang harus dipenuhi oleh turunan wajib.
Contoh yang memerlukan deskripsi pada semua dimensi yang terlihat:
- 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"
Contoh yang melarang sql_table_name pada tabel turunan:
- 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
Menerapkan pengurutan alfabetis elemen seinduk dalam penampung.
order_by(String, wajib): Jenis LookML dari turunan saudara kandung yang akan diurutkan, biasanya"dimension"atau"measure". Hanya turunan langsung dari node yang dipilih yang dibandingkan, dan turunandimension_grouptidak disertakan dalam"dimension".
Nama dibandingkan dengan memperhatikan huruf besar/kecil berdasarkan kode karakter: huruf besar diurutkan sebelum huruf kecil, dan _ diurutkan di antaranya.
Contoh yang mengharuskan dimensi dicantumkan dalam urutan abjad dalam tampilan:
- 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
Memastikan bahwa elemen yang cocok dengan filter tertentu muncul sebagai turunan pertama dari kategorinya.
position(String, opsional): Batasan posisi. Harus berupa"first"(defaultnya adalah"first").
Untuk aturan first_child, select harus menggunakan formulir parent.child_type, seperti "view.dimension". Parameter filters mengidentifikasi turunan yang harus muncul terlebih dahulu; parameter ini tidak mempersempit node induk mana yang diperiksa. Parameter parent_filters diterima oleh skema, tetapi diabaikan untuk jenis aturan ini.
Contoh yang mengharuskan dimensi kunci utama dideklarasikan terlebih dahulu dalam tampilan:
- 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
Menerapkan keunikan nilai properti di semua node yang cocok dalam file yang divalidasi selama menjalankan CI.
unique_property(String, wajib): Nama properti yang harus memiliki nilai unik di seluruh node yang cocok, seperti"sql_table_name"atau"label".
Nilai dibandingkan sebagai string yang sama persis, dan kemunculan pertama serta setiap duplikat dilaporkan. Jika proses validasi hanya memeriksa sebagian kecil file project, duplikat dalam file di luar subset tersebut tidak akan terdeteksi.
Contoh yang memastikan nama tabel unik di semua tampilan:
- 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"
Batasan aturan kustom
Saat membuat aturan kustom, patuhi batasan berikut:
- Tidak ada konflik dengan nama aturan bawaan: Aturan kustom tidak dapat menggunakan kembali nama apa pun dari katalog aturan bawaan, seperti
boolean-dimension-name-prefixatausql-table-name-uniqueness. - Nama kustom yang unik: Setiap aturan kustom harus memiliki nama yang berbeda dalam daftar
custom_rules. - Format dash-case: Nama aturan harus menggunakan format dash-case (
lowercase-words-with-hyphens).
Urutan evaluasi konfigurasi
Saat Style Validator mengevaluasi file LookML, aturan konfigurasi diterapkan dalam urutan berikut:
- Pengecualian file: Jika file cocok dengan pola apa pun di
ignore_files, file akan dilewati sepenuhnya. - Aturan aktif: Aturan aktif untuk file terdiri dari aturan dari
ruleset_version(all-v1.0ataunone), ditambah aturan bawaan yang diberi tingkat keparahanwarnatauerrordirulesatau di blokoverridesyang cocok, ditambah semua aturan yang ditentukan dicustom_rules. - Penyelesaian tingkat ketidakefektifan: Untuk setiap aturan aktif, setelan pertama berikut yang menentukan tingkat ketidakefektifan akan diprioritaskan: blok
overridesyang terakhir cocok, lalu blokrulesglobal, kemudianseverityaturan kustom, dan terakhir tingkat ketidakefektifan default (error). - Aturan yang dinonaktifkan: Aturan yang tingkat keparahannya yang telah diselesaikan adalah
disableddilewati untuk file tersebut.
Contoh file konfigurasi
Contoh berikut menunjukkan file lkmlstyle.yaml lengkap yang menunjukkan pemilihan set aturan dasar, pengecualian file, penyesuaian aturan global, penggantian yang tercakup, dan aturan kustom:
# 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"
Cakupan dan hasil validasi
Bagian berikut menjelaskan file yang diperiksa oleh Validator Gaya dan cara hasil validasi dilaporkan:
File divalidasi
- Hanya file
.lkmldan.lookmldi project root yang divalidasi. Project dependensi yang diimpor (lokal atau jarak jauh) tidak divalidasi. - Setiap file divalidasi berdasarkan kontennya sendiri. Pernyataan
include:tidak diikuti, dan objek yang ditarik melalui pernyataaninclude:tidak divalidasi sebagai bagian dari file yang disertakan. - CI yang dijalankan oleh dbt Cloud CI jobs memvalidasi cabang LookML produksi, bukan cabang pengembangan.
Perilaku dan output lulus atau gagal
- Validasi Gaya gagal dijalankan hanya jika setidaknya ada satu diagnostik dengan tingkat keparahan
error. Peringatan saja tidak menyebabkan proses berjalan gagal. - Di halaman hasil eksekusi CI, setiap hasil diagnostik mencakup nama aturan, jalur, nomor baris, cuplikan konteks, dan link ke dokumentasi aturan. Untuk mengetahui informasi selengkapnya tentang menjalankan rangkaian pengujian dan melihat hasil, lihat Menjalankan rangkaian pengujian Continuous Integration dan Melihat hasil eksekusi CI.
- File konfigurasi yang tidak valid akan menghasilkan satu error
invalid-configpada file konfigurasi di baris 1, dan validasi gagal.
Validasi inkremental
Anda dapat mengaktifkan validasi inkremental untuk Validator Gaya dengan mencentang kotak Hanya error inkremental (diaktifkan secara default) di bagian Validator Gaya saat Anda membuat atau mengedit rangkaian continuous integration.
Jika validasi inkremental diaktifkan, Validator Gaya hanya melaporkan pelanggaran yang baru di cabang pengembangan Anda:
- Tindakan ini memvalidasi cabang pengembangan.
- Tindakan ini memvalidasi cabang target menggunakan file konfigurasi cabang pengembangan.
- Laporan ini hanya melaporkan pelanggaran yang belum ada di cabang target.
Perhatikan perilaku berikut saat validasi inkremental diaktifkan:
- Pelanggaran yang sudah ada di cabang target tidak menyebabkan eksekusi gagal.
- Karena file konfigurasi cabang pengembangan digunakan untuk memvalidasi kedua cabang, perubahan konfigurasi pada cabang pengembangan tidak dapat menyembunyikan pelanggaran yang sudah ada atau membuat LookML yang sudah ada muncul sebagai pelanggaran baru dengan sendirinya.
- Cabang pengembangan harus berisi file konfigurasi
lkmlstyle.yaml(ataulkmlstyle.yml); jika tidak, proses akan gagal dengan error konfigurasi tidak ada.
Jika Hanya error inkremental dinonaktifkan, setiap pelanggaran yang ditemukan di cabang yang divalidasi akan dilaporkan.
Katalog aturan bawaan
Tabel berikut mencantumkan semua 25 aturan bawaan standar yang tersedia di set aturan all-v1.0:
Pemecahan masalah
Bagian berikut menjelaskan masalah konfigurasi umum dan variasi sintaksis yang didukung saat memecahkan masalah Validator Gaya:
Kesalahan konfigurasi
Masalah berikut ditolak saat file konfigurasi dimuat dan dilaporkan sebagai error invalid-config:
- Kunci tingkat teratas yang tidak diketahui atau kunci yang tidak diketahui di dalam konfigurasi aturan.
schema_versionatauruleset_versiontidak ada, atau nilai yang tidak didukung untuk salah satu parameter.- Tingkat keparahan skalar singkat, seperti
rule-name: warn. - Blok penggantian dengan
filesataurulesyang tidak ada atau kosong, atau konfigurasi aturan di dalam blok penggantian tanpaseverity. - Nama aturan yang tidak diketahui dalam blok penggantian.
- Aturan kustom yang namanya sama dengan aturan kustom lain atau aturan bawaan.
- Kunci khusus jenis yang digunakan pada
rule_typeyang salah (misalnya,order_bypada aturanpattern_match). - Ekspresi reguler tidak valid.
- Parameter
order_bytidak ada (untuk aturanorder) atau parameterunique_propertytidak ada (untuk aturanunique). - Nilai
positionselainfirst(untuk aturanfirst_child). !di awal kunci filter yang tidak diapit tanda petik, seperti!hidden: true, yang merupakan sintaksis tag YAML tidak valid dan menyebabkan file konfigurasi gagal diuraikan.
Masalah konfigurasi senyap
- Nama aturan yang salah eja dalam blok
rulesglobal akan diabaikan tanpa pemberitahuan. - Nama jenis LookML yang salah eja di
select,filters,parent_filters,requires_child,forbidden_child, atauorder_bytidak akan memunculkan error. Sebagai gantinya, aturan tidak pernah cocok (atau, untukrequires_child, selalu gagal). - Menentukan
matchdanshould_not_match, ataurequires_childdanforbidden_child: hanya parameter pertama dari setiap pasangan yang diterapkan, dan yang kedua diabaikan. - Menentukan
parent_filterspada aturanfirst_childtidak akan berpengaruh dan diabaikan. - Filter hanya mencocokkan properti yang dideklarasikan secara eksplisit dalam file LookML, bukan nilai default LookML (lihat Sintaksis pemfilteran).
- Pola ekspresi reguler dalam aturan
pattern_matchadalah kecocokan substring yang tidak berlabuh kecuali Anda melabuhkannya dengan^dan$(lihatpattern_match).
Variasi sintaksis yang diterima
- Nilai untuk
severitydanrule_typetidak peka huruf besar/kecil. rule_type: patternditerima sebagai alias untukpattern_match.- Spasi kosong di awal dan akhir
ruleset_versiondiabaikan.