ShellCheck 0.9 ilipo, static analyzer ya zipolopolo zolembedwa

Kutulutsidwa kwa pulojekiti ya ShellCheck 0.9 kwasindikizidwa, ndikupanga njira yowunikira zolembera za zipolopolo zomwe zimathandizira kuzindikira zolakwika m'malemba potengera mawonekedwe a bash, sh, ksh ndi dash. Khodi ya polojekitiyi idalembedwa ku Haskell ndikugawidwa pansi pa layisensi ya GPLv3. Zida zimaperekedwa kuti ziphatikizidwe ndi Vim, Emacs, VSCode, Sublime, Atom, ndi machitidwe osiyanasiyana omwe amathandizira malipoti olakwika ogwirizana ndi GCC.

ShellCheck 0.9 ilipo, static analyzer ya zipolopolo zolembedwa

Imathandizira kuzindikira zolakwika zonse za syntax mu code, zomwe zimapangitsa kuti womasulirayo awonetse zolakwika panthawi ya kuphedwa, ndi mavuto a semantic, chifukwa cha zomwe kuphedwa sikusokoneza, koma zolakwika mu khalidwe la script zimachitika. Analyzer amathanso kuzindikira zovuta, zovuta zosawonekera komanso zovuta zomwe zingayambitse kulephera nthawi zina.

Pakati pamagulu a zolakwika zomwe zapezeka, titha kuzindikira zovuta pakuthawa zilembo zapadera ndikuzilemba m'mawu, zolakwika pamawu okhazikika, kugwiritsa ntchito molakwika malamulo, nthawi yokonza mavuto ndi masiku, ndi zolakwika za syntax kwa oyamba kumene. Mwachitsanzo, kusakhalapo kwa mipata poyerekezera β€œ[[ $foo==0 ]]”, kukhalapo kwa mipata β€œvar = 42” kapena chizindikiro cha $ popereka β€œ$foo=42”, kugwiritsa ntchito zosinthika. popanda mawu "echo $1", chisonyezero cha mabulaketi owonjezera mu "tr -cd '[a-zA-Z0-9]'",

Kuphatikiza apo, imathandizira kutulutsa kwamalingaliro pakuwongolera kalembedwe ka code, kuchotsa zovuta zowoneka bwino, ndikuwonjezera kudalirika kwa zolemba. Mwachitsanzo, m'malo mwa "echo $[1+2]" padzaganiziridwa kuti agwiritse ntchito mawu akuti "$((..))",' rm -rf β€œ$STEAMROOT/”*' adzalembedwa kuti ndi osatetezeka. ndi yokhoza kuchotsa chikwatu cha mizu ngati kusintha sikunadzazidwe $STEAMROOT, ndipo kugwiritsa ntchito "echo {1..10}" kudzawonetsedwa ngati sagwirizana ndi dash ndi sh.

Mu mtundu watsopano:

  • chenjezo lowonjezera pamawu ngati 'local readonly foo'.
  • Machenjezo owonjezera okhudza malamulo omwe sakupezeka.
  • Machenjezo owonjezera okhudza ma backlinks ku 'declare x=1 y=$x'.
  • Chenjezo lowonjezera ngati $? amagwiritsidwa ntchito kusindikiza nambala yobwereza ya echo, printf, [], [[]] ndi kuyesa.
  • Malingaliro owonjezera kuti muchotse ((..))inarray[((idx))]]=val.
  • Anawonjezeranso malingaliro ogwirizanitsa maparensi awiri muzochitika za masamu.
  • Onjezani malingaliro kuti muchotse mabatani mu mawu a[(x+1)]=val.

Source: opennet.ru

Kuwonjezera ndemanga