Plugin Data Asset Governance di DataWorks DataStudio mendeteksi kesalahan sintaksis secara real-time saat Anda mengedit, serta memeriksa kode terhadap aturan tata kelola saat Anda menyimpannya atau atas permintaan. DataWorks Copilot membantu Anda memperbaiki masalah yang terdeteksi, sehingga meningkatkan kualitas kode dan keamanan data.
Kemampuan diagnosis masalah
Diagnosis masalah pengembangan node menggabungkan dua kemampuan inti, real-time syntax diagnosis (LSP) dan development health check, untuk menjaga kualitas kode dari berbagai sudut pandang.
Kemampuan | Real-time syntax diagnosis (LSP) | Development health check |
Tanggung jawab utama | Pemeriksaan sintaksis real-time dan analisis kode statis. | Pemeriksaan berbasis pustaka aturan untuk isu standar data, keamanan, dan performa. |
Kapan dijalankan | Berjalan secara real-time saat Anda mengedit kode. | Berjalan saat Anda menyimpan node. Anda juga dapat memicu pemeriksaan mendalam manual untuk satu file atau batch. |
Masalah yang tercakup | Kesalahan sintaksis SQL, penggunaan fungsi yang salah, dan masalah serupa. | Masalah yang terdeteksi oleh pustaka aturan bawaan, seperti penggunaan partisi yang tidak tepat, penulisan lintas proyek, dan ketidaksesuaian tipe bidang JOIN. Pustaka aturan kustom berbasis DataWorks Copilot juga didukung. |
Cara memperbaiki | Perbaikan dibantu oleh DataWorks Copilot. | Saran perbaikan berbasis AI dan Quick Fix. |
Perhatikan hal berikut:
Jika kode Anda mengandung kesalahan sintaksis, hanya real-time syntax diagnosis (LSP) yang dipicu. Aturan development health check yang objek pemeriksaannya adalah kode hanya berjalan jika sintaksis sepenuhnya benar.
Item pemeriksaan yang gagal tidak mencegah kode Anda berjalan.
Pilih metode pemeriksaan
Kesalahan sintaksis saat mengetik — Real-time syntax diagnosis (LSP) menandainya secara real-time.
Aturan tata kelola bawaan — Pemindaian langsung menerapkan aturan bawaan yang efisien pada node aktif saat Anda menyimpannya.
Cakupan aturan lengkap — Picu pemeriksaan mendalam secara manual untuk menerapkan semua aturan, termasuk aturan AI kustom. Anda dapat memindai satu file atau batch file yang sedang dibuka.
Ketersediaan regional
Diagnosis masalah pengembangan node hanya tersedia di wilayah berikut. deep check didukung di sebagian wilayah tersebut.
Wilayah | deep check |
China (Hangzhou) | Didukung |
China (Shanghai) | Didukung |
China (Beijing) | Didukung |
China (Zhangjiakou) | Didukung |
China (Ulanqab) | Didukung |
China (Shenzhen) | Didukung |
China (Chengdu) | Didukung |
China (Hong Kong) | Didukung |
Singapore | Didukung |
Malaysia (Kuala Lumpur) | Tidak didukung |
Indonesia (Jakarta) | Tidak didukung |
Jerman (Frankfurt) | Tidak didukung |
AS (Silicon Valley) | Tidak didukung |
AS (Virginia) | Tidak didukung |
Panduan cepat
Langkah-langkah berikut memandu Anda melalui alur inti diagnosis dan perbaikan masalah kode dalam waktu lima menit.
Aktifkan fitur pemeriksaan kualitas.
Buka DataWorks DataStudio, klik
Setup di bagian bawah panel navigasi kiri, lalu klik tab User pada halaman Setup. Pastikan bahwa DataStudio Governance Check Module Enablementdi bawahData GovernancedanSyntaxErrorEnabledi bawahLspSettingkeduanya dipilih. Kedua opsi ini dipilih secara default. Untuk jalur navigasi dan nilai valid setiap opsi, lihat Enable configuration items.Tulis kode contoh yang mengandung masalah.
Buat node MaxCompute ODPS SQL dan tempel kode contoh berikut, yang mengandung kesalahan, ke dalam editor.
-- Contoh: membuat tabel dalam SQL CREATE TABLE IF NOT EXISTS my_partitioned_table ( id STRING, name STRING, value BIGINT ) PARTITIONED BY (ds STRING) LIFECYCLE 365; -- Contoh: kesalahan sintaksis SELEC name FROM my_partitioned_table;Temukan masalah sintaksis LSP.
LSP menjalankan pemeriksaan real-time dan menandai
SELECdengan garis bawah bergelombang merah untuk menunjukkan kesalahan sintaksis. Klik ikon
di pojok kiri bawah halaman, lalu lihat masalah kode node tersebut di Problems Panel yang muncul.-- Contoh: kesalahan sintaksis SELEC name FROM my_partitioned_table;Perbaiki masalah sintaksis LSP.
Arahkan kursor ke kata kunci
SELECyang memiliki garis bawah bergelombang merah, lalu klik ikon bola lampu yang muncul. DataWorks Copilot kemudian memperbaikinya menjadiSELECT.Temukan masalah aturan tata kelola.
Klik Save. Editor memeriksa kode terhadap item pemeriksaan yang diaktifkan di plugin Data Asset Governance. Dalam contoh ini, kode memicu dua aturan development health check bawaan: Creating tables in SQL is not allowed dan Partitioned table queries must include a partition.
Jika Problems Panel tidak terbuka secara otomatis, klik ikon
di pojok kiri bawah halaman untuk membukanya.CREATE TABLE IF NOT EXISTS my_partitioned_table ( id STRING, name STRING, value BIGINT ) PARTITIONED BY (ds STRING) LIFECYCLE 365; SELECT name FROM my_partitioned_table;Perbaiki masalah aturan tata kelola.
Arahkan kursor ke
my_partitioned_tabledan klik Quick Fix. Atau, klik tautan di Problems Panel, tunggu saran perbaikan muncul, lalu terapkan saran tersebut setelah Anda memverifikasi bahwa saran tersebut sesuai dengan kebutuhan optimasi Anda.Dalam contoh ini, gunakan Quick Fix untuk memperbaiki pernyataan SQL kedua:
SELECT name FROM my_partitioned_table; SELECT name FROM my_partitioned_table WHERE ds = '20231010';Jalankan pemeriksaan mendalam satu file.
Setelah Anda memperbaiki masalah, klik deep check di atas editor untuk menjalankan pemeriksaan mendalam pada kode node tersebut. Editor memindai file secara mendalam dan melaporkan masalah yang masih tersisa. Misalnya, jika Anda hanya memperbaiki masalah Partitioned table queries must include a partition, pemindaian akan melaporkan masalah Creating tables in SQL is not allowed yang belum terselesaikan.
Fitur inti
Aktifkan item konfigurasi
Sesuaikan pengaturan diagnosis masalah agar sesuai dengan alur kerja pengembangan Anda. Semua item konfigurasi hanya berlaku untuk Akun Alibaba Cloud saat ini.
DataStudio Governance Check Module Enablement mengontrol kemampuan pemeriksaan plugin Data Asset Governance, dan SyntaxErrorEnable mengontrol diagnosis sintaksis real-time. Kedua opsi ini memeriksa kualitas kode pada lapisan yang berbeda. Aktifkan keduanya untuk mendapatkan cakupan diagnosis masalah yang lengkap.
Buka DataWorks workspace list page, pilih ruang kerja target, lalu pilih Quick Start > DataStudio di kolom Actions.
Klik
Setup di bagian bawah panel navigasi kiri, lalu klik tab User pada halaman Setup.Tabel berikut menjelaskan item konfigurasi tersebut.
Jalur konfigurasi | Item konfigurasi | Tujuan | Nilai valid | Nilai default | Dampak |
DataStudio |
| Mengaktifkan plugin Data Asset Governance. |
|
| Mengontrol apakah isu standar data, keamanan, dan performa diperiksa saat Anda menyimpan node. |
LspSetting |
| Mengaktifkan diagnosis sintaksis real-time. |
|
| Mengontrol apakah kesalahan sintaksis ditampilkan secara real-time saat Anda mengedit kode. |
LspSetting |
| Mengatur tingkat peringatan kesalahan sintaksis. |
|
| Mengontrol tingkat tampilan kesalahan sintaksis di editor, seperti garis bawah bergelombang merah ( |
Kelola pustaka aturan bawaan
Pustaka aturan menggerakkan perilaku pemeriksaan plugin Data Asset Governance dan terdiri dari aturan bawaan serta aturan kustom. Aktifkan atau nonaktifkan aturan tertentu sesuai kebutuhan.
Pengelolaan pustaka aturan hanya berlaku untuk Akun Alibaba Cloud saat ini.
Di panel navigasi kiri halaman DataStudio, klik ikon tata kelola
untuk membuka konfigurasi plugin Data Asset Governance.Di bagian Built-in Rule Library panel plugin Data Asset Governance, temukan aturan tata kelola target dan klik tombol toggle di sampingnya untuk mengaktifkan atau menonaktifkan aturan tersebut.
Diaktifkan (default): Aturan diperiksa saat Anda menyimpan node.
Dinonaktifkan: Aturan tidak lagi diperiksa saat Anda menyimpan node.
Pustaka aturan kustom
Ketika aturan bawaan tidak mencakup logika bisnis atau standar pengkodean spesifik tim Anda, gunakan pustaka aturan kustom plugin Data Asset Governance untuk menentukan aturan pemeriksaan baru. Anda menggambarkan setiap aturan dalam bahasa alami dan memberikan contoh yang benar maupun salah.
Skenario aturan kustom yang didukung
Dimensi pemeriksaan | Konten yang diperiksa | Nilai utama | Cakupan yang didukung |
Teks kode | Kode mentah dalam node, seperti skrip SQL. | Memeriksa gaya kode, memblokir kata kunci terlarang, dan menerapkan praktik terbaik. | Semua jenis task |
Konfigurasi penjadwalan | Grup resource, siklus penjadwalan, pengaturan timeout, dan sebagainya. | Menjaga penggunaan resource sesuai aturan dan mencegah kesalahan konfigurasi penjadwalan. | Semua jenis task |
Silsilah Node | Dependensi hulu dan hilir suatu task. | Menganalisis dampak pada rantai dan mencegah risiko saat node kritis berubah. | Semua jenis tugas |
Penguraian kode | Tabel, fungsi, dan view yang dioperasikan oleh kode SQL. | Mengidentifikasi operasi pada tabel sensitif dan penyalahgunaan fungsi, serta menjaga kepatuhan izin. | Semua jenis task SQL |
Metadata dan Silsilah | Skema tabel, detail bidang, dan lineage pada tingkat tabel. | Memeriksa dampak perubahan bidang dan menjaga konsistensi model data. | MaxCompute SQL, EMR Spark SQL, EMR Hive, dan Hologres SQL |
Metrik tata kelola data | Biaya, penyimpanan, skor kesehatan output, dan data T+1 lainnya. | Memantau biaya dan kualitas data untuk mendorong tata kelola berkelanjutan. | Semua jenis task SQL |
Prosedur
Di panel navigasi kiri halaman DataStudio, klik ikon tata kelola
untuk membuka konfigurasi plugin Data Asset Governance.Di bagian Custom rule library panel plugin Data Asset Governance, klik
+untuk membuat aturan.Untuk menghasilkan aturan tata kelola dengan DataWorks Copilot, klik AI Generation.
Konfigurasikan bidang aturan. Contoh ini membuat aturan kustom berikut:
Rule Name:
Fact table updates must include WHERE.Severity: Tingkat peringatan hanya memberi pemberitahuan selama pengembangan, sedangkan tingkat error memicu peringatan dan memblokir rilis sebelum penerapan. Dalam contoh ini, pilih
Warning.Scope: Pilih cakupan node yang berlaku untuk aturan tersebut, seperti
MaxCompute > MaxCompute SQL.Effective scope: Didukung tingkat pengguna, tingkat ruang kerja, dan tingkat penyewa. Hanya administrator penyewa yang dapat melihat tingkat penyewa, hanya administrator ruang kerja yang dapat melihat tingkat ruang kerja, dan anggota biasa hanya dapat melihat opsi tingkat pengguna.
Rule Description:
Check UPDATE statements in MaxCompute SQL. If a statement updates a fact table whose name ends with _f but has no WHERE clause, flag it as a high-risk issue.Contoh valid:
UPDATE my_project.order_detail_f SET status='shipped' WHERE order_id='123';UPDATE my_project.order_detail_dim SET status='shipped';
Contoh tidak valid:
UPDATE my_project.order_detail_f SET status='expired';
Klik Save. Aturan tersebut berlaku dalam deep check.
Untuk berhenti menggunakan aturan tata kelola kustom, arahkan kursor ke aturan tersebut dan klik ikon nonaktifkan
yang muncul.
deep check
Deep check adalah pemeriksaan komprehensif yang memakan waktu dan dipicu secara manual. Pemeriksaan ini menerapkan semua aturan tata kelola, termasuk aturan AI kustom. Sebaliknya, pemindaian langsung yang berjalan saat Anda menyimpan node hanya menerapkan aturan bawaan yang efisien. Untuk memeriksa kode Anda terhadap seluruh aturan, jalankan deep check.
Untuk memindai satu file
Untuk memindai file yang sedang terbuka di editor, klik deep check di atas editor. Editor memindai file secara mendalam dan melaporkan masalah yang masih tersisa.
Misalnya, dalam kode contoh dari Quick start, jika Anda hanya memperbaiki masalah Partitioned table queries must include a partition, pemindaian akan melaporkan masalah Creating tables in SQL is not allowed yang belum terselesaikan.
Untuk memindai beberapa file secara batch
Perhatikan batasan berikut sebelum memulai pemindaian batch:
Pemeriksaan batch hanya mencakup tab file yang sedang terbuka di editor. File yang tidak terbuka tidak dapat dipilih.
Anda dapat memilih maksimal 5 file.
Hanya satu deep check yang dapat berjalan dalam satu waktu selama pemeriksaan batch.
Di panel navigasi kiri halaman DataStudio, klik ikon tata kelola
untuk membuka konfigurasi plugin Data Asset Governance.Di bagian deep check panel plugin Data Asset Governance, pilih file dan aturan untuk pemeriksaan batch, lalu mulai deep check.
Setelah deep check selesai, tab deep check di bagian bawah menampilkan hasilnya. Misalnya, pemeriksaan file
testassetrulemenghasilkan dua peringatan: Creating tables in SQL is not allowed [my_partitioned_table] (aturanForbidUseCreateTable, baris 7, kolom 28) dan Partitioned table queries must include a partition (aturanMissPartitionKeyFilter, baris 17, kolom 18). Klik nama aturan untuk melihat detailnya.
Di panel hasil deep check, klik View Log di pojok kanan atas untuk meninjau bagaimana model bahasa besar melakukan penalaran terhadap setiap aturan pemeriksaan.
Referensi aturan tata kelola
Untuk melihat detail semua aturan pemeriksaan, klik
di pojok kanan atas bagian deep check panel plugin Data Asset Governance. Bagian berikut menjelaskan beberapa aturan inti yang tertanam dalam plugin Data Asset Governance.
Untuk jenis node yang berlaku bagi setiap aturan tata kelola, lihat Knowledge Base.
Partitioned table queries must include a partition
Risiko: Mengkueri tabel partisi MaxCompute tanpa menentukan partisi memicu full table scan, yang mengonsumsi banyak sumber daya komputasi dan menghasilkan biaya komputasi tinggi.
Contoh kode salah:
SELECT user_id, order_amount
FROM user_orders
WHERE status = 'paid';Contoh kode benar:
SELECT user_id, order_amount
FROM user_orders
WHERE status = 'paid'
AND pt = '${bizdate}'; -- Tambahkan filter partisiLogika perbaikan otomatis: Quick Fix didukung. Sistem menambahkan filter partisi ke klausa WHERE, seperti AND pt = '${bizdate}'.
INSERT INTO with the rerun property is not allowed
Risiko: Jika task SQL hanya berisi logika INSERT INTO dan konfigurasi penjadwalannya memungkinkan rerun, setiap rerun akan menambahkan data ke tabel target. Hal ini mudah menyebabkan duplikasi data dan mengurangi akurasi data.
Contoh kode salah:
-- Properti task diatur sebagai "rerunnable"
INSERT INTO target_table SELECT * FROM source_table;Contoh kode benar:
-- Properti task diatur sebagai "rerunnable"
INSERT OVERWRITE TABLE target_table SELECT * FROM source_table;Logika perbaikan otomatis: Quick Fix didukung. Sistem mengubah INSERT INTO menjadi INSERT OVERWRITE sehingga rerun akan menimpa data, bukan menambahkannya.
JOIN field types must match
Risiko: Dalam MaxCompute SQL, jika bidang kunci asing operasi JOIN memiliki tipe yang tidak konsisten, terjadi konversi tipe implisit. Hal ini dapat menyebabkan kesalahan komputasi dan degradasi performa, serta memengaruhi kualitas data.
Contoh kode salah:
-- a.user_id adalah BIGINT, b.uid adalah STRING
SELECT * FROM table_a a JOIN table_b b ON a.user_id = b.uid;Contoh kode benar:
-- a.user_id adalah BIGINT, b.uid adalah STRING
SELECT * FROM table_a a JOIN table_b b ON a.user_id = CAST(b.uid AS BIGINT);Logika perbaikan otomatis: Quick Fix didukung. Sistem mendeteksi ketidaksesuaian dan menerapkan fungsi CAST pada salah satu bidang untuk mengonversi tipenya secara eksplisit agar sesuai dengan bidang lainnya.
INSERT into a table that does not belong to the current project
Risiko: Menulis data dari task di proyek A ke tabel di proyek B merupakan operasi berisiko tinggi. Hal ini melanggar isolasi antar-proyek dan dapat menyebabkan akses data tidak sah serta kebocoran data.
Contoh kode salah:
-- Dijalankan dalam task proyek_A
INSERT INTO project_B.some_table SELECT * FROM my_table;Contoh kode benar:
-- Pendekatan yang direkomendasikan: biarkan task di proyek pemilik tabel (project_B) yang menulis data.
-- Hindari operasi ini di project_A.Logika perbaikan otomatis: Perbaikan otomatis tidak didukung. Sesuaikan tautan sinkronisasi data berdasarkan kebutuhan bisnis Anda sehingga proyek target menulis data dengan task-nya sendiri.
Online auto triggered tasks must not write to tables in the development environment
Risiko: Saat task yang dipicu otomatis di lingkungan produksi menulis data ke tabel di lingkungan pengembangan, tingkat perlindungan data turun dan muncul risiko keamanan data.
Contoh kode salah:
-- Dijalankan dalam task lingkungan produksi (PROD)
INSERT OVERWRITE TABLE user_dev.temp_data SELECT * FROM user_prod.source_data;Contoh kode benar:
-- Task produksi harus menulis ke tabel di lingkungan produksi
INSERT OVERWRITE TABLE user_prod.result_data SELECT * FROM user_prod.source_data;Logika perbaikan otomatis: Perbaikan otomatis tidak didukung. Ubah tabel target secara manual agar alur data mematuhi standar isolasi lingkungan.
Creating tables in SQL is not allowed
Risiko: Menggunakan CREATE TABLE secara langsung dalam task SQL terjadwal membuat kepemilikan tabel tidak jelas, karena tabel biasanya dimiliki oleh Akun Alibaba Cloud atau akun penjadwalan. Hal ini meningkatkan biaya manajemen dan menciptakan risiko penghapusan data yang tidak disengaja.
Contoh kode salah:
CREATE TABLE my_temp_table (id INT);
INSERT INTO my_temp_table VALUES (1);Contoh kode benar:
-- Buat tabel terlebih dahulu di modul manajemen tabel DataWorks, lalu gunakan langsung dalam task SQL.
INSERT INTO my_temp_table VALUES (1);Logika perbaikan otomatis: Perbaikan otomatis tidak didukung. Buat tabel di manajemen metadata DataWorks, atau gunakan CREATE TABLE IF NOT EXISTS untuk menghindari kesalahan dalam beberapa skenario.
Missing scheduling parameter checker
Risiko: Task yang dipicu otomatis memproses data secara inkremental berdasarkan waktu. Jika kondisi WHERE menghilangkan parameter penjadwalan seperti ${bizdate}, task tersebut mungkin memproses data penuh setiap hari atau memproses rentang tanggal yang salah. Hal ini menyebabkan data hilang atau salah serta membuang banyak sumber daya.
Contoh kode salah:
-- Salah: parameter penjadwalan hilang, sehingga pemrosesan inkremental harian tidak mungkin
INSERT OVERWRITE TABLE users_active_today PARTITION (pt = '${bizdate}')
SELECT user_id FROM login_log; -- WHERE pt = '...' hilangContoh kode benar:
-- Benar: gunakan parameter penjadwalan sebagai filter untuk memproses data secara inkremental setiap hari
INSERT OVERWRITE TABLE users_active_today PARTITION (pt = '${bizdate}')
SELECT user_id FROM login_log
WHERE pt = '${bizdate}';Logika perbaikan otomatis: Perbaikan otomatis didukung sebagian. Plugin menyoroti lokasi yang mungkin kehilangan filter parameter penjadwalan. Karena logika bisnis beragam, tambahkan filter yang benar secara manual sesuai kebutuhan Anda.
FAQ
Apakah pemeriksaan ini memengaruhi performa editor atau waktu yang dibutuhkan untuk menyimpan task?
Real-time syntax diagnosis (LSP) memiliki dampak kecil namun dapat diterima terhadap performa editor. Plugin Data Asset Governance berjalan saat Anda menyimpan node, yang menambahkan sedikit waktu pada operasi penyimpanan. Durasi pastinya tergantung pada kompleksitas kode dan jumlah aturan. Jika Anda mengalami lag yang signifikan, periksa lingkungan jaringan Anda atau hubungi dukungan teknis.
Apakah diagnosis masalah dikenai biaya terpisah, dan apakah DataWorks Copilot wajib digunakan?
Diagnosis masalah merupakan kemampuan dasar DataWorks dan tidak dikenai biaya terpisah. Namun, jika Anda menggunakan saran perbaikan DataWorks Copilot, aturan penagihan yang dijelaskan dalam Data Agent Overview berlaku. Anda juga dapat memperbaiki masalah secara manual tanpa Copilot.
Saya telah mengaktifkan fitur ini, tetapi masalah dalam kode saya tidak terdeteksi. Mengapa?
Lakukan troubleshooting sebagai berikut:
Periksa sakelar utama: Pastikan bahwa
DataStudio Governance Check Module EnablementdanSyntaxErrorEnablediaktifkan di Setup > User. Untuk jalur navigasi dan nilai valid, lihat Enable configuration items.Periksa sakelar aturan: Buka Built-in Rule Library dan pastikan aturan yang ingin Anda terapkan telah diaktifkan. Untuk petunjuk, lihat Manage the built-in rule library.
Konfirmasi jenis node: Periksa apakah jenis node saat ini berada dalam cakupan aturan target.
Periksa jaringan: Periksa apakah ada permintaan jaringan yang gagal di developer tools browser Anda. Layanan LSP atau layanan tata kelola mungkin gagal dimuat karena masalah jaringan.
Apa yang terjadi jika layanan LSP atau plugin tata kelola tidak tersedia?
Jika layanan backend sementara tidak tersedia, diagnosis masalah gagal secara diam-diam. Anda tidak melihat prompt sintaksis real-time atau masalah tata kelola saat menyimpan, tetapi pengeditan dan penyimpanan kode tetap berfungsi seperti biasa. Muat ulang halaman dan picu pemeriksaan kembali.
Lampiran: Glosarium
Istilah | Deskripsi |
Real-time syntax diagnosis (LSP) | Pemeriksaan sintaksis real-time dan analisis kode statis yang berjalan saat Anda mengedit kode. |
Development health check | Pemeriksaan berbasis pustaka aturan untuk isu standar data, keamanan, dan performa. Termasuk pemindaian langsung yang berjalan saat Anda menyimpan node dan pemeriksaan mendalam yang dipicu secara manual. |
Live Scan | Pemeriksaan cepat dan ringan yang berjalan pada node aktif saat Anda menyimpannya. Karena kendala performa saat ini, hanya menerapkan aturan bawaan yang efisien. |
deep check | Pemeriksaan komprehensif yang memakan waktu dan dipicu secara manual. Menerapkan semua aturan, termasuk aturan AI kustom. Anda dapat memindai satu file atau batch hingga 5 file yang sedang dibuka. |
Custom AI Checker | Aturan pemeriksaan yang Anda definisikan dalam format tertentu, seperti bahasa alami plus contoh, dan digerakkan oleh model bahasa besar. |
Problems Panel | Area UI, native di VS Code atau dikustomisasi oleh plugin, yang menampilkan masalah kode dalam satu tempat. |
Quick Fix | Aksi yang dapat diklik yang disediakan plugin untuk masalah yang terdeteksi guna memperbaiki kode atau konfigurasi secara otomatis. |