ShellCheck 0.9 disponeblas, senmova analizilo por ŝelaj skriptoj

La eldono de la projekto ShellCheck 0.9 estis publikigita, evoluigante sistemon por senmova analizo de ŝelaj skriptoj, kiu subtenas identigi erarojn en skriptoj konsiderante la trajtojn de bash, sh, ksh kaj dash. La projektkodo estas skribita en Haskell kaj distribuita sub la permesilo GPLv3. Komponantoj estas provizitaj por integriĝo kun Vim, Emacs, VSCode, Sublime, Atom, kaj diversaj kadroj kiuj subtenas GCC-kongruan erarraportadon.

ShellCheck 0.9 disponeblas, senmova analizilo por ŝelaj skriptoj

Ĝi subtenas identigi ambaŭ sintaksajn erarojn en la kodo, kiuj kondukas al la interpretisto montri eraron en la momento de ekzekuto, kaj semantikajn problemojn, pro kiuj ekzekuto ne estas interrompita, sed anomalioj en la konduto de la skripto okazas. La analizilo ankaŭ povas identigi proplempunktojn, ne-evidentajn problemojn kaj kaptilojn kiuj povas konduki al fiaskoj sub certaj cirkonstancoj.

Inter la klasoj de detektitaj eraroj, ni povas noti problemojn kun eskapado de specialaj signoj kaj enkadrigo de ili en citaĵoj, eraroj en kondiĉaj esprimoj, malĝusta uzo de komandoj, problemoj pri prilaborado de tempo kaj datoj, kaj tipaj sintaksaj eraroj por komencantoj. Ekzemple, la foresto de spacoj kiam oni komparas “[[ $foo==0 ]]”, la ĉeeston de spacoj “var = 42” aŭ la indiko de la $ simbolo kiam oni atribuas “$foo=42”, la uzon de variabloj sen citiloj “echo $1”, la indiko de kromaj kvadrataj krampoj en “tr -cd '[a-zA-Z0-9]'”,

Aldone, ĝi subtenas la eligon de rekomendoj por plibonigi kodstilon, forigi problemojn de porteblo kaj pliigi la fidindecon de skriptoj. Ekzemple, anstataŭ “echo $[1+2]” oni proponos uzi la sintakson “$(((..))”, la konstruo 'rm -rf “$STEAMROOT/”*' estos markita kiel nesekura. kaj kapabla forigi la radikan dosierujon se la variablo ne estas plenigita $STEAMROOT, kaj la uzo de "echo {1..10}" estos reliefigita kiel nekongrua kun dash kaj sh.

En la nova versio:

  • Aldonita averto por esprimoj kiel 'loka nurlegebla foo'.
  • Aldonita averto pri nedisponeblaj komandoj.
  • Aldonita averto pri malantaŭaj ligiloj al 'deklari x=1 y=$x'.
  • Aldonita averto se $? uzata por presi la revenkodon de echo, printf, [ ], [[ ]] kaj test.
  • Aldonita rekomendo por forigi ((..))inarray[((idx))]=val.
  • Aldonita rekomendo por kunligi duoblajn krampojn en aritmetikaj kuntekstoj.
  • Aldonis rekomendon por forigi krampojn en la esprimo a[(x+1)]=val.

fonto: opennet.ru

Aldoni komenton