ShellCheck 0.9 kasedhiya, analisa statis kanggo skrip cangkang

Rilis proyek ShellCheck 0.9 wis diterbitake, ngembangake sistem analisis statis skrip cangkang sing ndhukung identifikasi kesalahan ing skrip kanthi njupuk fitur bash, sh, ksh lan dash. Kode proyek ditulis ing Haskell lan disebarake miturut lisensi GPLv3. Komponen diwenehake kanggo integrasi karo Vim, Emacs, VSCode, Sublime, Atom, lan macem-macem kerangka kerja sing ndhukung laporan kesalahan sing kompatibel karo GCC.

ShellCheck 0.9 kasedhiya, analisa statis kanggo skrip cangkang

Ndhukung ngenali kesalahan sintaks ing kode kasebut, sing ndadΓ©kakΓ© interpreter nampilake kesalahan nalika eksekusi, lan masalah semantik, amarga eksekusi ora disrupted, nanging ana anomali ing prilaku script. Analisa uga bisa ngenali bottlenecks, masalah sing ora jelas lan pitfalls sing bisa nyebabake kegagalan ing kahanan tartamtu.

Ing antarane kelas kesalahan sing dideteksi, kita bisa nyathet masalah kanggo uwal saka karakter khusus lan nggawe kuotasi, kesalahan ing ekspresi kondisional, panggunaan perintah sing salah, masalah wektu lan tanggal pangolahan, lan kesalahan sintaksis sing khas kanggo pamula. Contone, ora ana spasi nalika mbandhingake "[[ $foo==0 ]]", anane spasi "var = 42" utawa indikasi simbol $ nalika nemtokake "$foo=42", panggunaan variabel tanpa tanda kutip "echo $1", indikasi tambahan kurung kotak ing "tr -cd '[a-zA-Z0-9]'",

Kajaba iku, ndhukung output rekomendasi kanggo nambah gaya kode, ngilangi masalah portabilitas, lan nambah linuwih skrip. Contone, tinimbang "kumandhang $[1+2]" bakal diusulake nggunakake sintaks "$((..))", konstruksi 'rm -rf "$STEAMROOT/"*' bakal ditandhani ora aman. lan bisa mbusak direktori ROOT yen variabel ora diisi $STEAMROOT, lan panggunaan "kumandhang {1..10}" bakal disorot minangka ora kompatibel karo mlayu lan sh.

Ing versi anyar:

  • Ditambahake bebaya kanggo ekspresi kaya 'local readonly foo'.
  • Ditambahake bebaya babagan prentah sing ora kasedhiya.
  • Ditambahake bebaya babagan backlinks kanggo 'nyatakake x=1 y=$x'.
  • Ditambahake bebaya yen $? digunakake kanggo nyithak kode bali saka gema, printf, [ ], [[ ]] lan test.
  • Rekomendasi sing ditambahake kanggo mbusak ((..))inarray[((idx))]=val.
  • Nambahake rekomendasi kanggo nggabungake kurung dobel ing konteks aritmetika.
  • Nambahake rekomendasi kanggo mbusak tanda kurung ing ekspresi a[(x+1)]=val.

Source: opennet.ru

Add a comment