ShellCheck - Alat yang Menampilkan Peringatan dan Saran untuk Skrip Shell


ShellCheck adalah alat analisis statis yang menampilkan peringatan dan saran mengenai kode buruk dalam skrip shell bash/sh. Ini dapat digunakan dalam beberapa cara: dari web dengan menempelkan skrip shell Anda di editor online (Ace – editor kode mandiri yang ditulis dalam JavaScript) di https://www.shellcheck.net (selalu disinkronkan ke git terbaru commit, dan merupakan cara paling sederhana untuk mencoba ShellCheck) untuk mendapatkan umpan balik instan.

Alternatifnya, Anda dapat menginstalnya di mesin Anda dan menjalankannya dari terminal, mengintegrasikannya dengan editor teks Anda serta dalam rangkaian build atau pengujian Anda.

Ada tiga hal utama yang dilakukan ShellCheck:

  • Ini menunjukkan dan menjelaskan masalah sintaksis pemula yang umum yang menyebabkan shell memberikan pesan kesalahan samar.
  • Ini menunjukkan dan menjelaskan masalah semantik tingkat menengah yang menyebabkan shell berperilaku aneh dan berlawanan dengan intuisi.
  • Hal ini juga menunjukkan peringatan halus, kasus sudut dan jebakan yang dapat menyebabkan skrip pengguna tingkat lanjut gagal dalam keadaan di masa depan.

Pada artikel ini, kami akan menunjukkan cara menginstal dan menggunakan ShellCheck dalam berbagai cara untuk menemukan bug atau kode buruk di skrip shell Anda di Linux.

Cara Menginstal dan Menggunakan ShellCheck di Linux

ShellCheck dapat dengan mudah diinstal secara lokal melalui manajer paket Anda seperti yang ditunjukkan.

Di Debian/Ubuntu

apt-get install shellcheck

Di RHEL/CentOS

yum -y install epel-release
yum install ShellCheck

Di Fedora

dnf install ShellCheck

Setelah ShellCheck terinstal, mari kita lihat cara menggunakan ShellCheck dalam berbagai metode yang kami sebutkan sebelumnya.

Menggunakan ShellCheck Dari Web

Buka https://www.shellcheck.net dan tempel skrip Anda di editor Ace yang disediakan, Anda akan melihat hasilnya di bagian bawah editor seperti yang ditunjukkan pada gambar layar di bawah.

Dalam contoh berikut, skrip test shell terdiri dari baris berikut:

#!/bin/bash
#declare variables
MINARGS=2
E_NOTROOT=50
E_MINARGS=100
  
#echo values of variables 
echo $MINARGS
echo $E_NONROOT
exit 0;

Dari tangkapan layar di atas, dua variabel pertama E_NOTROOT dan E_MINARGS telah dideklarasikan tetapi tidak digunakan, ShellCheck melaporkan hal ini sebagai “kesalahan sugestif ”:

SC2034: E_NOTROOT appears unused. Verify it or export it.
SC2034: E_MINARGS appears unused. Verify it or export it. 

Kemudian yang kedua, nama yang salah (dalam pernyataan echo $E_NONROOT) digunakan untuk variabel gema E_NOTROOT, itulah sebabnya ShellCheck menunjukkan kesalahan:

SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is

Sekali lagi ketika Anda melihat perintah echo, variabel belum diberi tanda kutip ganda (membantu mencegah globbing dan pemisahan kata), oleh karena itu Shell Check menampilkan peringatan:

SC2086: Double quote to prevent globbing and word splitting.

Menggunakan ShellCheck Dari Terminal

Anda juga dapat menjalankan ShellCheck dari baris perintah, kami akan menggunakan skrip shell yang sama di atas sebagai berikut:

shellcheck test.sh

Menggunakan ShellCheck Dari Editor Teks

Anda juga dapat melihat saran dan peringatan ShellCheck secara langsung di berbagai editor, ini mungkin cara yang lebih efisien dalam menggunakan ShellCheck, setelah Anda menyimpan file, ini menunjukkan kesalahan apa pun dalam kode.

Di Vim, gunakan ALE atau Syntastic (kami akan menggunakan ini):

Mulailah dengan menginstal Patogen sehingga mudah untuk menginstal syntastic. Jalankan perintah di bawah ini untuk mendapatkan file pathogen.vim dan direktori yang diperlukan:

mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

Kemudian tambahkan ini ke file ~/.vimrc Anda:

execute pathogen#infect()

Setelah Anda menginstal patogen, dan sekarang Anda dapat memasukkan sintaksis ke dalam ~/.vim/bundle sebagai berikut:

cd ~/.vim/bundle && git clone --depth=1 https://github.com/vim-syntastic/syntastic.git

Selanjutnya tutup vim dan mulai kembali untuk memuat ulang, lalu ketik perintah di bawah ini:

:Helptags

Jika semuanya berjalan dengan baik, Anda seharusnya sudah mengintegrasikan ShellCheck dengan Vim, tangkapan layar berikut menunjukkan cara kerjanya menggunakan skrip yang sama di atas.

Jika Anda mendapatkan kesalahan setelah mengikuti langkah-langkah di atas, mungkin Anda tidak menginstal Patogen dengan benar. Ulangi langkah-langkah tersebut tetapi ini memastikan Anda melakukan hal berikut:

  • Membuat direktori ~/.vim/autoload dan ~/.vim/bundle.
  • Menambahkan baris eksekusi patogen#infect() ke file ~/.vimrc Anda.
  • Apakah git mengkloning sintaksis di dalam ~/.vim/bundle.
  • Gunakan izin yang sesuai untuk mengakses semua direktori di atas.

Anda juga dapat menggunakan editor lain untuk memeriksa kode buruk di skrip shell seperti:

  • Di Emacs, gunakan Flycheck.
  • Di Sublime, gunakan SublimeLinter.
  • Di Atom, gunakan Linter.
  • Di sebagian besar editor lain, gunakan kompatibilitas kesalahan GCC.

Catatan: Gunakan galeri kode yang buruk untuk melakukan lebih banyak ShellChecking.

Repositori ShellCheck Github: https://github.com/koalaman/shellcheck

Itu dia! Pada artikel ini, kami menunjukkan cara memasang dan menggunakan ShellCheck untuk menemukan bug atau kode buruk pada skrip shell Anda di Linux. Bagikan pemikiran Anda dengan kami melalui bagian komentar di bawah.

Apakah Anda mengetahui alat serupa lainnya di luar sana? Jika ya, bagikan juga info tentang mereka di komentar.