Loaʻa ʻo ShellCheck 0.9, kahi mea hoʻoponopono static no nā ʻatikala shell

Ua paʻi ʻia ka hoʻokuʻu ʻia ʻana o ka papahana ShellCheck 0.9, e hoʻomohala ana i kahi ʻōnaehana no ka nānā ʻana i nā palapala shell e kākoʻo ana i ka ʻike ʻana i nā hewa i loko o nā palapala e noʻonoʻo ana i nā hiʻohiʻona o bash, sh, ksh a me dash. Ua kākau ʻia ke code papahana ma Haskell a hāʻawi ʻia ma lalo o ka laikini GPLv3. Hāʻawi ʻia nā ʻāpana no ka hoʻohui ʻana me Vim, Emacs, VSCode, Sublime, Atom, a me nā ʻano hana like ʻole e kākoʻo ana i ka hōʻike hewa ʻana i ka GCC.

Loaʻa ʻo ShellCheck 0.9, kahi mea hoʻoponopono static no nā ʻatikala shell

Kākoʻo ia i ka ʻike ʻana i nā hewa syntax ʻelua i ke code, e alakaʻi ana i ka unuhi ʻōlelo e hōʻike ana i kahi hewa i ka manawa o ka hoʻokō ʻana, a me nā pilikia semantic, no laila ʻaʻole i hoʻopau ʻia ka hoʻokō ʻana, akā aia nā anomalies i ke ʻano o ka palapala. Hiki i ka mea loiloi ke ʻike i nā bottlenecks, nā pilikia ʻike ʻole a me nā pitfalls i hiki ke alakaʻi i nā hemahema ma lalo o kekahi mau kūlana.

Ma waena o nā papa o nā hewa i ʻike ʻia, hiki iā mākou ke ʻike i nā pilikia me ka pakele ʻana i nā huaʻōlelo kūikawā a me ka hoʻopili ʻana iā lākou i nā huaʻōlelo, nā hewa i nā ʻōlelo kūlana, ka hoʻohana hewa ʻole ʻana i nā kauoha, nā pilikia i ka wā hana a me nā lā, a me nā hewa syntax maʻamau no ka poʻe hoʻomaka. No ka laʻana, ka nele o nā hakahaka i ka wā e hoʻohālikelike ai i ka "[[ $foo==0 ]]", ka hele ʻana o nā hakahaka "var = 42" a i ʻole ka hōʻailona o ka hōʻailona $ i ka wā e hāʻawi ai iā "$foo=42", ka hoʻohana ʻana i nā mea hoʻololi. me ka ʻole o nā huaʻōlelo “echo $1”, ka hōʻailona o nā brackets huinaha hou ma "tr -cd '[a-zA-Z0-9]'",

Eia kekahi, kākoʻo ia i ka hoʻopuka ʻana o nā manaʻo no ka hoʻomaikaʻi ʻana i ke ʻano code, hoʻopau i nā pilikia portability, a me ka hoʻonui ʻana i ka hilinaʻi o nā palapala. No ka laʻana, ma kahi o "echo $[1+2]" e manaʻo ʻia e hoʻohana i ka syntax "$((..))", e hōʻailona ʻia ke kūkulu 'rm -rf "$STEAMROOT/"*' he palekana. a hiki iā ia ke holoi i ka papa kuhikuhi kumu inā ʻaʻole i hoʻopiha ʻia ka mea hoʻololi $STEAMROOT, a ʻo ka hoʻohana ʻana i ka "echo {1..10}" e hōʻike ʻia ʻaʻole kūpono me ka dash a me ka sh.

Ma ka mana hou:

  • Hoʻohui ʻia ka ʻōlelo aʻo e like me 'local readonly foo'.
  • Hoʻohui ʻia ka ʻōlelo aʻo e pili ana i nā kauoha hiki ʻole.
  • Hoʻohui ʻia ka ʻōlelo aʻo e pili ana i nā backlinks e 'hōʻike x=1 y=$x'.
  • Hoʻohui ʻia ka ʻōlelo aʻo inā $? hoʻohana ʻia e paʻi i ke code hoʻihoʻi o echo, printf, [ ], [[ ]] a me ka hoʻāʻo.
  • Hoʻohui ʻia ka manaʻo e wehe ((..))inarray[((idx))]=val.
  • Hoʻohui ʻia kahi ʻōlelo paipai no ka hoʻohui ʻana i nā pale pālua ma nā pōʻaiapili helu helu.
  • Hoʻohui ʻia kahi ʻōlelo paipai e wehe i nā pale ma ka ʻōlelo a[(x+1)]=val.

Source: opennet.ru

Pākuʻi i ka manaʻo hoʻopuka