Pemeriksaan statis dan pemformatan adalah dua perkakas yang menjaga basis kode tetap sehat sebelum program dijalankan. Odin menyediakan pemeriksaan statis sebagai perintah bawaan melalui odin check, sedangkan pemformatan pada lini dev-2026-10 masih menjadi ranah alat pendamping, bukan subperintah compiler. Topik ini menunjukkan cara memakai keduanya sebagaimana adanya, termasuk status kematangan masing-masing, sehingga kebiasaan kerja yang dibangun tidak mengandalkan perintah yang belum ada.
odin check sebagai pemeriksaan statis#
odin check mengurai dan memeriksa tipe seluruh program tanpa mengompilasinya, sehingga tidak ada binari yang dihasilkan dan pemeriksaan berjalan jauh lebih cepat daripada build. Perintah ini cocok dipasang pada titik pemeriksaan yang sering, misalnya setiap kali berkas disimpan di editor atau setiap kali tahap pembangunan proyek selesai, karena biayanya nyaris nol. Pemeriksaan atas program yang bersih berakhir dengan hening, yaitu tanpa satu baris keluaran pun dan dengan kode keluar 0.
Program berikut dipakai sebagai contoh pemeriksaan yang bersih.
package main
import "core:fmt"
main :: proc() {
fmt.println("program utama bersih")
}# periksa program utama tanpa mengompilasinya
odin check utama.odin -filePerintah di atas selesai tanpa mencetak pesan apa pun, dan hening itulah tanda lulus pada pemeriksaan statis. Konvensi hening ini juga dipakai banyak alat command line, sehingga tidak perlu mencari pesan sukses yang memang tidak pernah dicetak.
Menangkap masalah dengan -vet dan -vet-shadowing#
Mode pemeriksaan biasa hanya menolak program yang tidak sah menurut aturan bahasa. Flag -vet memperketat pemeriksaan dengan menandai kejanggalan yang sah secara tata bahasa tetapi hampir selalu bukan yang dimaksudkan, seperti deklarasi yang tidak pernah dipakai. Flag tambahan -vet-shadowing menandai deklarasi yang menaungi deklarasi bernama sama di lingkup luarnya. Kedua flag itu diuji pada program yang sengaja mengandung tiga masalah.
package main
import "core:fmt"
import "core:strings"
main :: proc() {
sisa := 42
nama := "Budi"
{
nama := "Citra"
fmt.println("dalam blok", nama)
}
fmt.println("luar blok", nama)
}# periksa dengan pemeriksaan ketat dan deteksi shadowing
odin check bermasalah.odin -file -vet -vet-shadowing/home/kal/my-project/content/odin/perkakas-dan-pengiriman/odin-check-dan-fmt/bermasalah.odin(4:8) Error: 'strings' declared but not used
import "core:strings"
^
/home/kal/my-project/content/odin/perkakas-dan-pengiriman/odin-check-dan-fmt/bermasalah.odin(7:2) Error: 'sisa' declared but not used
sisa := 42
^
/home/kal/my-project/content/odin/perkakas-dan-pengiriman/odin-check-dan-fmt/bermasalah.odin(10:3) Error: Declaration of 'nama' shadows declaration at line 8
nama := "Citra"
^ Tiga temuan dilaporkan berturut-turut dengan lokasi persis. Import core:strings dan variabel sisa dinyatakan tidak pernah dipakai oleh -vet, sedangkan deklarasi nama di dalam blok menaungi nama di lingkup luar. Flag -vet-shadowing menandainya dengan rujukan ke baris deklarasi yang dinaungi. Jalur berkas pada keluaran ditulis lengkap karena laporan compiler selalu memakai jalur absolut berkas yang diperiksa, sehingga penunjukan barisnya tetap tepat di mesin mana pun program diperiksa. Pesan-pesan tersebut adalah error bagi alat pemeriksaan, bukan bagi bahasa, karena program yang sama tetap dapat dikompilasi tanpa flag ketat tersebut.
Pemformatan kanonik dan status odin fmt#
Subperintah odin fmt tidak ada pada lini dev-2026-10. Perintahnya tidak dikenali, dan compiler menjawab dengan teks bantuan berisi daftar perintah yang sah, sebagaimana diperlihatkan baris terakhir jawabannya.
# tanyakan subperintah fmt yang tidak ada
odin help fmt | tail -1'fmt' is not a recognized command.Formatter yang menjadi standar ekosistem saat ini adalah odinfmt, alat eksternal yang dikembangkan bersama language server OLS dan dirilis pada repositori yang sama. Alat ini membaca pilihan gaya dari berkas odinfmt.json pada folder proyek, dengan opsi antara lain character_width, tabs, brace_style, dan sort_imports. Gaya dasar formatter Odin sendiri telah ditetapkan pada isu resmi proyek, yaitu tab untuk indentasi dan gaya kurung 1tbs, sehingga alat yang berbeda cenderung menghasilkan bentuk yang sama.
# tidak-dijalankan
# format seluruh berkas odin di folder proyek dengan odinfmt dari OLS
odinfmt -w .Perintah di atas tidak dijalankan di sandbox karena odinfmt tidak terpasang di sana, dan itu bukan penghalang untuk mengadopsinya pada lingkungan kerja sendiri. Cara pemasangan paling mudah adalah mengunduh rilis OLS yang sudah menyertakan binari odinfmt, kemudian menyandingkannya dengan hook penyimpanan editor sehingga berkas terformat otomatis. Status pemformatan bawaan dapat dinyatakan langsung: formatter terintegrasi pada compiler masih berupa tujuan yang tercantum di isu resmi proyek, dan sampai hal itu terealisasi, odinfmt adalah pemformatan kanonik de facto komunitas.
Kesalahan umum#
Kesalahan pertama adalah mengira odin check menghasilkan binari. odin check hanya memeriksa, dan program baru berjalan setelah odin build atau odin run dipanggil. Pemisahan ini justru menguntungkan karena pemeriksaan cepat dapat dipasang pada titik yang sering, sedangkan kompilasi yang mahal dipakai hanya saat program benar-benar akan diuji.
Kesalahan kedua adalah menjalankan odin fmt lalu menyimpulkan compiler rusak. Jawaban compiler memang berupa teks bantuan berisi daftar perintah, dan itu tanda subperintah tersebut belum ada, bukan tanda instalasi yang gagal. Pemasangan odinfmt dari rilis OLS memenuhi kebutuhan pemformatan tersebut.
Kesalahan ketiga adalah memakai flag ketat hanya sekali di terminal. Manfaat -vet dan -vet-shadowing baru muncul ketika keduanya diikat pada kebiasaan, misalnya sebagai argumen pemeriksaan editor atau pada titik pemeriksaan sebelum kode diserahkan. Dengan begitu, temuan keluar tepat pada saat kejadiannya dan tidak menumpuk menjadi utang kebersihan.
Ringkasan#
odin checkmemeriksa tipe tanpa kompilasi, lulus dengan hening, dan menjadi titik pemeriksaan yang murah untuk editor maupun tahap pembangunan.-vetmenandai deklarasi yang tidak terpakai,-vet-shadowingmenandai deklarasi yang menaungi deklarasi bernama sama, dan keduanya mengubah kejanggalan menjadi laporan dengan lokasi persis.odin fmttidak ada pada dev-2026-10, dan pemformatan kanonik komunitas dilakukan olehodinfmtdari proyek OLS dengan konfigurasiodinfmt.json.- Gaya dasar formatter Odin ditetapkan pada isu resmi proyek, yaitu tab untuk indentasi dan kurung bergaya 1tbs.
Referensi#
- Overview — Odin Documentation — Dokumentasi resmi bahasa yang menyertai perintah odin check.
- DanielGavin/ols — GitHub — Repositori OLS beserta alat formatter odinfmt dan opsi odinfmt.json.
- Odin Code Formatter — Issue #820 — Isu resmi proyek yang menetapkan tujuan dan gaya dasar formatter Odin.