5 poin oleh GN⁺ 2023-11-25 | 1 komentar | Bagikan ke WhatsApp

Pengantar ShellCheck

  • ShellCheck adalah alat untuk menemukan bug dalam skrip shell.
  • Dapat dipasang di lingkungan lokal melalui cabal, apt, dnf, pkg, dan brew.
  • Jika Anda menempelkan skrip, ShellCheck akan menampilkan hasil analisis.

Fitur ShellCheck

  • ShellCheck dapat digunakan secara bebas di bawah lisensi GPLv3.
  • Didokumentasikan di ShellCheck Wiki, dan kode sumbernya dapat dilihat di GitHub.
  • Sudah dipaketkan di sebagian besar distro atau package manager.
  • Didukung sebagai linter terintegrasi di editor-editor utama, dan kode di repositori GitHub dapat diperiksa otomatis melalui CodeClimate, Codacy, dan CodeFactor.
  • Ditulis dalam bahasa Haskell, sehingga cocok bagi pengguna yang tertarik padanya.

Ucapan terima kasih

  • Menyampaikan terima kasih khusus kepada GitHub Sponsors: Gitpod, Mercedes-Benz, BashSupport Pro, per1234, WhitewaterFoundry, cavcrosby, dcminter, photostructure, Cronitor, djdefi, steve-chavez, dan lainnya.

Opini GN⁺

  • Hal terpenting dari artikel ini adalah bahwa ShellCheck merupakan alat yang berguna untuk menemukan bug dalam skrip shell.
  • ShellCheck gratis, didukung di berbagai platform dan editor, serta mudah digunakan, sehingga bisa menarik bagi banyak orang.
  • Secara khusus, dukungan dari komunitas open source dan fakta bahwa alat ini dikembangkan dengan bahasa Haskell dapat menjadi daya tarik bagi para pengembang perangkat lunak.

1 komentar

 
GN⁺ 2023-11-25
Komentar Hacker News
  • Hal-hal yang perlu diperhatikan saat menulis skrip

    • Disarankan menggunakan opsi -u (nounset) agar terjadi error saat memakai variabel yang belum dideklarasikan. Pengecualiannya adalah ketika ekspansi array membuat array kosong dianggap sebagai unbound.
    • Opsi -n (noexec) dapat digunakan untuk mencoba eksekusi palsu (dry-run) yang mencegah perintah dijalankan.
    • Opsi -e (errexit) juga berguna, tetapi perlu diperhatikan bahwa hanya perintah "naked" yang gagal yang akan memicu penghentian. Untuk menghindari ini, lebih disukai menambahkan || fail "..." pada perintah.
  • Menemukan kerentanan dalam skrip shell

    • Ditemukan kerentanan eskalasi hak akses melalui ekspansi aritmetika. Misalnya, jika $ENV_VAR bisa dikendalikan melalui $((1 + ENV_VAR)), maka kode dapat disuntikkan.
    • Shellcheck tidak dapat mendeteksi ini dengan konfigurasi default. Saat mengimplementasikan fitur yang penting bagi keamanan, sebaiknya jangan menggunakan shell.
  • Shellcheck dan strictbash

    • Shellcheck sangat berguna.
    • strictbash adalah wrapper yang menjalankan Shellcheck sebelum skrip dieksekusi, sehingga skrip tidak bisa dijalankan jika ada error. Selain itu, ia juga mengatur semua flag "strict mode" Bash.
  • Penyebutan tentang Shellcheck

    • Ada banyak penyebutan tentang Shellcheck, dan diskusi besar terakhir terjadi pada 2021.
  • Menggunakan Haskell dan Turtle

    • Dengan menggunakan Haskell untuk mengonversi skrip deployment bersama library Turtle, duplikasi bisa sangat dikurangi.
    • Hasilnya, kodenya menjadi jauh lebih pendek.
  • Penggunaan Shellcheck dan linter

    • Mengikuti prinsip "commit setelah semua peringatan diperbaiki", serta memasukkan Shellcheck dan linter lain ke dalam konfigurasi pre-commit.
    • Sebagian besar skrip shell dimasukkan ke dalam file .gitlab-ci.yml, sehingga sulit diperiksa. Dibuat wrapper untuk memeriksanya secara otomatis.
  • Bash language server

    • Bash language server juga ada.
  • Efek pembelajaran dari Shellcheck

    • Saat memeriksa skrip /bin/sh produksi pertama dengan Shellcheck, ada hal baru yang dipelajari meskipun sudah menulis skrip sejak tahun 80-an.
  • Rekomendasi menggunakan Bach

    • Saat harus menggunakan Bash, disarankan memakai Bach. Menggunakan Bash untuk pekerjaan yang cukup panjang mungkin tidak tepat.
  • Shellcheck dan penanganan source/import

    • Shellcheck sangat bagus, tetapi menangani source atau import sangat merepotkan. Ini adalah masalah yang muncul karena sh memang seperti mimpi buruk.