ShellCheck 0.9 mavjud, qobiq skriptlari uchun statik analizator

ShellCheck 0.9 loyihasining chiqarilishi chop etildi, u bash, sh, ksh va tire xususiyatlarini hisobga olgan holda skriptlardagi xatolarni aniqlashni qo'llab-quvvatlaydigan qobiq skriptlarini statik tahlil qilish tizimini ishlab chiqdi. Loyiha kodi Haskellda yozilgan va GPLv3 litsenziyasi ostida tarqatiladi. Komponentlar Vim, Emacs, VSCode, Sublime, Atom va GCC-mos xatolar haqida hisobot berishni qo'llab-quvvatlaydigan turli ramkalar bilan integratsiya uchun taqdim etiladi.

ShellCheck 0.9 mavjud, qobiq skriptlari uchun statik analizator

U koddagi sintaksis xatolarini aniqlashni qo'llab-quvvatlaydi, bu esa tarjimonning bajarilish vaqtida xatoni ko'rsatishiga olib keladi va semantik muammolarni, buning natijasida bajarilishi buzilmaydi, lekin skriptning xatti-harakatlarida anomaliyalar yuzaga keladi. Analizator, shuningdek, muayyan sharoitlarda muvaffaqiyatsizlikka olib kelishi mumkin bo'lgan qiyinchiliklarni, aniq bo'lmagan muammolarni va tuzoqlarni aniqlay oladi.

Aniqlangan xatolar sinflari orasida biz maxsus belgilardan qochish va ularni qo'shtirnoq ichida joylashtirish bilan bog'liq muammolarni, shartli ifodalardagi xatolar, buyruqlarni noto'g'ri ishlatish, vaqt va sanalarni qayta ishlash muammolari va yangi boshlanuvchilar uchun odatiy sintaktik xatolarni qayd etishimiz mumkin. Masalan, “[[ $foo==0 ]] solishtirishda boʻshliqlar yoʻqligi, “var = 42” boʻshliqlar mavjudligi yoki “$foo=42” belgilashda $ belgisining koʻrsatilishi, oʻzgaruvchilardan foydalanish. tirnoqsiz “echo $1”, “tr -cd '[a-zA-Z0-9]' ichida qo'shimcha kvadrat qavslar ko'rsatilishi,

Bundan tashqari, u kod uslubini yaxshilash, portativlik muammolarini bartaraf etish va skriptlarning ishonchliligini oshirish bo'yicha tavsiyalar chiqarishni qo'llab-quvvatlaydi. Masalan, “echo $[1+2]” o‘rniga “$((..)) sintaksisidan foydalanish taklif qilinadi, “rm -rf “$STEAMROOT/”*’ konstruktsiyasi xavfli deb belgilanadi. va o'zgaruvchi $STEAMROOT to'ldirilmagan bo'lsa, ildiz katalogini o'chirishga qodir va "echo {1..10}" dan foydalanish chiziqcha va sh bilan mos kelmaydigan sifatida ta'kidlanadi.

Yangi versiyada:

  • "Faqat o'qish uchun mahalliy foo" kabi iboralar uchun ogohlantirish qo'shildi.
  • Mavjud bo'lmagan buyruqlar haqida ogohlantirish qo'shildi.
  • "x=1 y=$x"ni e'lon qilish uchun qayta havolalar haqida ogohlantirish qo'shildi.
  • Agar $ bo'lsa, ogohlantirish qo'shildimi? echo, printf, [ ], [[ ]] va testning qaytish kodini chop etish uchun ishlatiladi.
  • ((..))inarray[((idx))]=valni olib tashlash boʻyicha tavsiya qoʻshildi.
  • Arifmetik kontekstda qo‘sh qavslarni birlashtirish bo‘yicha tavsiya qo‘shildi.
  • a[(x+1)]=val ifodasidagi qavslarni olib tashlash bo'yicha tavsiya qo'shildi.

Manba: opennet.ru

a Izoh qo'shish