Available ang ShellCheck 0.9, isang static na analyzer para sa mga script ng shell

Ang paglabas ng proyekto ng ShellCheck 0.9 ay nai-publish, na bumubuo ng isang sistema para sa static na pagsusuri ng mga script ng shell na sumusuporta sa pagtukoy ng mga error sa mga script na isinasaalang-alang ang mga tampok ng bash, sh, ksh at dash. Ang code ng proyekto ay nakasulat sa Haskell at ipinamahagi sa ilalim ng lisensya ng GPLv3. Ang mga bahagi ay ibinibigay para sa pagsasama sa Vim, Emacs, VSCode, Sublime, Atom, at iba't ibang mga framework na sumusuporta sa pag-uulat ng error na katugma sa GCC.

Available ang ShellCheck 0.9, isang static na analyzer para sa mga script ng shell

Sinusuportahan nito ang pagtukoy ng parehong mga error sa syntax sa code, na humahantong sa pagpapakita ng interpreter ng isang error sa oras ng pagpapatupad, at mga problema sa semantiko, dahil sa kung saan ang pagpapatupad ay hindi nagambala, ngunit ang mga anomalya sa pag-uugali ng script ay nangyayari. Ang analyzer ay maaari ding tumukoy ng mga bottleneck, hindi halatang mga problema at mga pitfalls na maaaring humantong sa mga pagkabigo sa ilalim ng ilang mga pangyayari.

Kabilang sa mga klase ng mga nakitang error, mapapansin natin ang mga problema sa pagtakas sa mga espesyal na character at pag-frame ng mga ito sa mga quote, mga error sa conditional expression, maling paggamit ng mga command, mga problema sa pagpoproseso ng oras at petsa, at mga tipikal na syntax error para sa mga nagsisimula. Halimbawa, ang kawalan ng mga puwang kapag inihahambing ang "[[ $foo==0 ]]", ang pagkakaroon ng mga puwang na "var = 42" o ang indikasyon ng simbolo ng $ kapag nagtatalaga ng "$foo=42", ang paggamit ng mga variable nang walang mga panipi na "echo $1", ang indikasyon ng mga dagdag na square bracket sa "tr -cd '[a-zA-Z0-9]'",

Bukod pa rito, sinusuportahan nito ang output ng mga rekomendasyon para sa pagpapabuti ng istilo ng code, pag-aalis ng mga problema sa portability, at pagpapataas ng pagiging maaasahan ng mga script. Halimbawa, sa halip na β€œecho $[1+2]” ay imumungkahing gamitin ang syntax na β€œ$((..))”, ang construction na 'rm -rf "$STEAMROOT/"*' ay mamarkahan bilang hindi ligtas. at may kakayahang tanggalin ang root directory kung ang variable ay hindi napunan ng $STEAMROOT, at ang paggamit ng "echo {1..10}" ay iha-highlight bilang hindi tugma sa dash at sh.

Sa bagong bersyon:

  • Nagdagdag ng babala para sa mga expression tulad ng 'local readonly foo'.
  • Nagdagdag ng babala tungkol sa mga hindi available na command.
  • Nagdagdag ng babala tungkol sa mga backlink upang 'ipahayag ang x=1 y=$x'.
  • Nagdagdag ng babala kung $? ginamit upang i-print ang return code ng echo, printf, [ ], [[ ]] at pagsubok.
  • Nagdagdag ng rekomendasyon para alisin ang ((..))inarray[((idx))]=val.
  • Nagdagdag ng rekomendasyon para sa pagsasama-sama ng dobleng panaklong sa mga konteksto ng aritmetika.
  • Nagdagdag ng rekomendasyon upang alisin ang mga panaklong sa expression na a[(x+1)]=val.

Pinagmulan: opennet.ru

Magdagdag ng komento