Kabuk komut dosyaları için statik bir analizör olan ShellCheck 0.9 mevcuttur

Bash, sh, ksh ve dash özelliklerini dikkate alarak komut dosyalarındaki hataları tanımlamayı destekleyen kabuk komut dosyalarının statik analizi için bir sistem geliştiren ShellCheck 0.9 projesinin sürümü yayınlandı. Proje kodu Haskell'de yazılmıştır ve GPLv3 lisansı altında dağıtılmaktadır. Vim, Emacs, VSCode, Sublime, Atom ve GCC uyumlu hata raporlamayı destekleyen çeşitli çerçevelerle entegrasyon için bileşenler sağlanmıştır.

Kabuk komut dosyaları için statik bir analizör olan ShellCheck 0.9 mevcuttur

Hem koddaki sözdizimi hatalarının (yorumlayıcının yürütme sırasında hata görüntülemesine neden olan) hem de yürütmenin kesintiye uğramadığı ancak betiğin davranışında anormalliklerin meydana geldiği anlamsal sorunların tanımlanmasını destekler. Analizci ayrıca belirli koşullar altında arızalara yol açabilecek darboğazları, belirgin olmayan sorunları ve tuzakları da tespit edebilir.

Tespit edilen hata sınıfları arasında, özel karakterlerden kaçma ve bunları tırnak içine alma sorunları, koşullu ifadelerdeki hatalar, komutların yanlış kullanımı, saat ve tarihlerin işlenmesinde sorunlar ve yeni başlayanlar için tipik sözdizimi hataları sayılabilir. Örneğin, “[[ $foo==0 ]]” karşılaştırmasında boşluk olmaması, “var = 42” boşluklarının varlığı veya “$foo=42” ataması yapılırken $ sembolünün belirtilmesi, değişkenlerin kullanılması tırnak işaretleri olmadan “echo $1”, "tr -cd '[a-zA-Z0-9]'" içinde ekstra köşeli parantezlerin göstergesi,

Ayrıca kod stilinin iyileştirilmesi, taşınabilirlik sorunlarının ortadan kaldırılması ve komut dosyalarının güvenilirliğinin artırılmasına yönelik önerilerin çıktısını destekler. Örneğin, “echo $[1+2]” yerine “$((..))” sözdiziminin kullanılması önerilecek, 'rm -rf “$STEAMROOT/”*' yapısı güvensiz olarak işaretlenecek ve eğer değişken $STEAMROOT ile doldurulmamışsa kök dizini silebilir ve "echo {1..10}" kullanımının tire ve sh ile uyumsuz olduğu vurgulanacaktır.

Yeni sürümde:

  • 'Yerel salt okunur foo' gibi ifadeler için uyarı eklendi.
  • Kullanılamayan komutlarla ilgili uyarı eklendi.
  • 'Declare x=1 y=$x' için geri bağlantılarla ilgili uyarı eklendi.
  • Eğer $? echo, printf, [ ], [[ ]] ve testin dönüş kodunu yazdırmak için kullanılır.
  • ((..))inarray[((idx))]=val öğesinin kaldırılmasına yönelik öneri eklendi.
  • Aritmetik bağlamlarda çift parantezleri birleştirmek için bir öneri eklendi.
  • a[(x+1)]=val ifadesindeki parantezlerin kaldırılmasına yönelik bir öneri eklendi.

Kaynak: opennet.ru

Yorum ekle