ShellCheck 0.9 imetolewa. Hutengeneza mfumo tuli wa uchanganuzi wa hati za ganda unaotumia ugunduzi wa makosa katika hati, kwa kuzingatia vipengele mahususi vya bash, sh, ksh na dashi. Msimbo wa mradi umeandikwa katika Haskell na inasambazwa chini ya leseni ya GPLv3. Vipengee vimetolewa kwa ajili ya kuunganishwa na Vim, Emacs, VSCode, Sublime, Atom, na IDE mbalimbali zinazotumia kuripoti makosa yanayotangamana na GCC.

Kichanganuzi huauni ugunduzi wa makosa yote mawili ya kisintaksia, ambayo husababisha mkalimani kutoa hitilafu wakati wa utekelezaji, na masuala ya kisemantiki, ambayo hayatatiza utekelezaji lakini husababisha hitilafu katika tabia ya hati. Kichanganuzi kinaweza pia kutambua vikwazo, masuala fiche, na mitego ambayo inaweza kusababisha ajali katika hali fulani.
Miongoni mwa madarasa ya makosa ambayo yanaweza kugunduliwa ni matatizo ya kuepuka wahusika maalum na kunukuu, makosa katika maneno ya masharti, matumizi sahihi ya amri, matatizo ya kushughulikia wakati na tarehe, na makosa ya kawaida ya syntax ya Kompyuta. Kwa mfano, kukosa nafasi wakati wa kulinganisha "[[ $foo==0 ]]", uwepo wa nafasi katika "var = 42" au kubainisha alama ya $ wakati wa kugawa "$foo=42", kwa kutumia viambajengo bila nukuu "echo $1", ikibainisha mabano ya mraba yasiyo ya lazima katika "tr -cd '[a-zA-Z0-9]'",
Zaidi ya hayo, mapendekezo ya kuboresha mtindo wa msimbo, kuondoa masuala ya kubebeka, na kuongeza utegemezi wa hati yanatumika. Kwa mfano, badala ya "echo $[1+2]," syntax "$(..))" itapendekezwa; construct 'rm -rf "$STEAMROOT/"*' itaalamishwa kuwa si salama na inayoweza kufuta saraka ya mizizi ikiwa kigezo cha $STEAMROOT hakina kitu; na matumizi ya "echo {1..10}" yataalamishwa kuwa hayaoani na dashi na sh.
Katika toleo jipya:
- Imeongeza onyo kwa misemo kama vile 'foo ya kusoma pekee'.
- Imeongeza onyo kuhusu kutopatikana kwa amri.
- Imeongeza onyo kuhusu marejeleo ya nyuma katika 'declare x=1 y=$x'.
- Imeongeza onyo ikiwa $? inatumika kurejesha msimbo wa kurudi wa echo, printf, [ ], [[ ]] na test.
- Umeongeza pendekezo la kuondoa ((..))inarray[((idx))]]=val.
- Mapendekezo yameongezwa ya kuchanganya mabano mawili katika miktadha ya hesabu.
- Umeongeza pendekezo la kuondoa mabano katika usemi a[(x+1)]=val.
Chanzo: opennet.ru
