ShellCheck 0.9 sayogi, analisa statik pikeun skrip cangkang

Pelepasan proyék ShellCheck 0.9 parantos diterbitkeun, ngembangkeun sistem pikeun analisa statik skrip cangkang anu ngadukung ngaidentipikasi kasalahan dina naskah kalayan nganggap fitur bash, sh, ksh sareng dash. Kodeu proyék ditulis dina Haskell sareng disebarkeun dina lisénsi GPLv3. Komponén disayogikeun pikeun integrasi sareng Vim, Emacs, VSCode, Sublime, Atom, sareng sababaraha kerangka anu ngadukung ngalaporkeun kasalahan anu cocog sareng GCC.

ShellCheck 0.9 sayogi, analisa statik pikeun skrip cangkang

Ieu ngarojong ngaidentipikasi duanana kasalahan sintaksis dina kode, nu ngakibatkeun juru nampilkeun kasalahan dina waktu palaksanaan, sarta masalah semantis, alatan nu palaksanaan teu kaganggu, tapi anomali dina kabiasaan naskah lumangsung. Analis ogé tiasa ngaidentipikasi bottlenecks, masalah anu teu jelas sareng pitfalls anu tiasa nyababkeun gagal dina kaayaan anu tangtu.

Di antara kelas kasalahan anu dideteksi, urang tiasa ngémutan masalah sareng ngémutan karakter khusus sareng ngararangkay dina tanda petik, kasalahan dina ekspresi kondisional, pamakean paréntah anu salah, masalah ngolah waktos sareng kaping, sareng kasalahan sintaksis khas pikeun pamula. Contona, henteuna spasi lamun ngabandingkeun "[[ $foo==0]]", ayana spasi "var = 42" atawa indikasi simbol $ nalika assigning "$ foo = 42", pamakéan variabel. tanpa tanda petik "echo $1", indikasi tambahan kurung pasagi dina "tr -cd '[a-zA-Z0-9]'",

Salaku tambahan, éta ngadukung kaluaran saran pikeun ningkatkeun gaya kode, ngaleungitkeun masalah portabilitas, sareng ningkatkeun réliabilitas naskah. Contona, tinimbang "echo $[1+2]" bakal diusulkeun ngagunakeun sintaksis "$((..))", konstruksi 'rm -rf "$STEAMROOT/"*' bakal ditandaan teu aman. sarta sanggup mupus diréktori root lamun variabel teu dieusian $ STEAMROOT, sarta pamakéan "echo {1..10}" bakal disorot salaku sauyunan jeung dash na sh.

Dina versi anyar:

  • Ditambahkeun peringatan pikeun ekspresi sapertos 'lokal readonly foo'.
  • Ditambahkeun peringatan ngeunaan paréntah anu henteu sayogi.
  • Ditambahkeun peringatan ngeunaan backlinks pikeun 'nyatakeun x=1 y=$x'.
  • Ditambahkeun warning lamun $? dipaké pikeun nyitak kodeu balik gema, printf, [], [[]] jeung test.
  • Nambahkeun rekomendasi pikeun miceun ((..))inarray[((idx))]=val.
  • Nambahkeun rekomendasi pikeun ngahijikeun tanda kurung ganda dina kontéks aritmetika.
  • Nambahkeun rekomendasi pikeun nyabut tanda kurung dina ekspresi a[(x+1)]=val.

sumber: opennet.ru

Tambahkeun komentar