ShellCheck'e Giriş
- ShellCheck, kabuk betiklerindeki hataları bulan bir araçtır.
- Yerel ortamda
cabal, apt, dnf, pkg, brew üzerinden kurulabilir.
- Betiği yapıştırdığınızda ShellCheck analiz sonuçlarını gösterir.
ShellCheck'in Özellikleri
- ShellCheck, GPLv3 lisansı ile özgürce kullanılabilir.
- Belgeleri ShellCheck Wiki'de yer alır ve kaynak kodu GitHub'da incelenebilir.
- Çoğu dağıtımda veya paket yöneticisinde zaten paketlenmiş durumdadır.
- Başlıca editörlerde entegre linter olarak desteklenir; ayrıca CodeClimate, Codacy ve CodeFactor üzerinden GitHub depolarındaki kodu otomatik olarak denetleyebilir.
- Haskell diliyle yazılmıştır ve bu alana ilgi duyan kullanıcılar için uygundur.
Teşekkür
- GitHub Sponsors'a özel teşekkürler: Gitpod, Mercedes-Benz, BashSupport Pro, per1234, WhitewaterFoundry, cavcrosby, dcminter, photostructure, Cronitor, djdefi, steve-chavez ve diğerleri.
GN⁺'un Görüşü
- Bu yazıdaki en önemli nokta, ShellCheck'in kabuk betiklerindeki hataları bulmak için faydalı bir araç olmasıdır.
- ShellCheck'in ücretsiz olması, farklı platformlar ve editörlerde desteklenmesi ve kullanımının kolay olması okuyucuların ilgisini çekebilir.
- Özellikle açık kaynak topluluğunun desteği ve Haskell diliyle geliştirilmiş olması, yazılım geliştiricilere çekici gelebilir.
1 yorum
Hacker News görüşleri
Betik yazarken dikkat edilmesi gerekenler
-u(nounset) seçeneğinin kullanılması öneriliyor. Dizi genişletmesinde boş dizinin unbound sayıldığı durum bunun istisnasıdır.-n(noexec) seçeneği kullanılabilir.-e(errexit) seçeneği de yararlıdır, ancak yalnızca başarısız olan "çıplak" komutların çıkışa neden olduğuna dikkat edilmelidir. Bunu önlemek için komutlara|| fail "..."eklemek tercih ediliyor.Kabuk betiklerinde zafiyet keşfi
$((1 + ENV_VAR))üzerinden $ENV_VAR kontrol edilebiliyorsa kod enjekte edilebilir.Shellcheck ve strictbash
Shellcheck'ten bahsedilmesi
Haskell ve Turtle kullanımı
Shellcheck ve linter kullanımı
.gitlab-ci.ymldosyalarında yer aldığı için denetlenmesi zor. Bunu otomatik denetleyen bir wrapper yapıldı.Bash dil sunucusu
Shellcheck'in öğretici etkisi
/bin/shbetiği denetlendiğinde, 80'lerden beri betik yazıyor olunmasına rağmen yeni şeyler öğrenildi.Bach kullanım önerisi
Shellcheck ve source/import işleme