Ang ShellCheck 0.9 anaa, usa ka static analyzer alang sa mga script sa shell

Ang pagpagawas sa ShellCheck 0.9 nga proyekto gipatik, nga nagpalambo sa usa ka sistema alang sa static nga pagtuki sa mga script sa shell nga nagsuporta sa pag-ila sa mga sayup sa mga script nga gikonsiderar ang mga bahin sa bash, sh, ksh ug dash. Ang code sa proyekto gisulat sa Haskell ug giapod-apod ubos sa lisensya sa GPLv3. Gihatag ang mga sangkap alang sa panagsama sa Vim, Emacs, VSCode, Sublime, Atom, ug lainlaing mga balangkas nga nagsuporta sa pagreport sa sayup nga nahiuyon sa GCC.

Ang ShellCheck 0.9 anaa, usa ka static analyzer alang sa mga script sa shell

Gisuportahan niini ang pag-ila sa duha ka mga sayup sa syntax sa code, nga mosangpot sa pagpakita sa tighubad sa usa ka sayup sa panahon sa pagpatay, ug mga problema sa semantiko, tungod niini ang pagpatay dili mabalda, apan ang mga anomaliya sa kinaiya sa script mahitabo. Ang analisador mahimo usab nga makaila sa mga bottleneck, dili klaro nga mga problema ug mga lit-ag nga mahimong mosangpot sa mga kapakyasan ubos sa pipila ka mga kahimtang.

Taliwala sa mga klase sa namatikdan nga mga kasaypanan, atong mamatikdan ang mga problema sa pag-ikyas sa mga espesyal nga karakter ug pag-frame niini sa mga kinutlo, mga sayop sa conditional nga mga ekspresyon, sayop nga paggamit sa mga sugo, mga problema sa pagproseso sa oras ug mga petsa, ug kasagaran nga mga sayup sa syntax alang sa mga nagsugod. Pananglitan, ang pagkawala sa mga luna kung itandi ang "[[ $foo==0 ]]", ang presensya sa mga espasyo "var = 42" o ang timailhan sa simbolo nga $ kung gi-assign ang "$foo=42", ang paggamit sa mga variable walay mga kinutlo nga "echo $1", ang timailhan sa dugang nga square bracket sa "tr -cd '[a-zA-Z0-9]'",

Dugang pa, gisuportahan niini ang output sa mga rekomendasyon alang sa pagpaayo sa istilo sa code, pagwagtang sa mga problema sa pagdala, ug pagdugang sa pagkakasaligan sa mga script. Pananglitan, imbes nga "echo $[1+2]" isugyot nga gamiton ang syntax nga "$((..))", ang pagtukod nga 'rm -rf "$STEAMROOT/"*' markahan nga dili luwas. ug makahimo sa pagtangtang sa root directory kung ang variable dili mapuno $STEAMROOT, ug ang paggamit sa "echo {1..10}" ipasiugda nga dili uyon sa dash ug sh.

Sa bag-ong bersyon:

  • Gidugang nga pasidaan alang sa mga ekspresyon sama sa 'local readonly foo'.
  • Gidugang nga pasidaan bahin sa dili magamit nga mga mando.
  • Gidugang nga pasidaan bahin sa mga backlink aron 'ipahayag ang x=1 y=$x'.
  • Gidugang nga pasidaan kung $? gigamit sa pag-imprinta sa return code sa echo, printf, [ ], [[ ]] ug pagsulay.
  • Gidugang nga rekomendasyon sa pagtangtang ((..))inarray[((idx))]=val.
  • Nagdugang usa ka rekomendasyon alang sa paghiusa sa doble nga parentheses sa mga konteksto sa aritmetika.
  • Nagdugang og rekomendasyon sa pagtangtang sa parentesis sa ekspresyong a[(x+1)]=val.

Source: opennet.ru

Idugang sa usa ka comment