Հրապարակվել է ShellCheck 0.9 նախագծի թողարկումը, որը մշակում է shell սկրիպտների ստատիկ վերլուծության համակարգ, որն աջակցում է սկրիպտներում սխալների նույնականացմանը՝ հաշվի առնելով bash, sh, ksh և dash հատկանիշները: Ծրագրի կոդը գրված է Haskell-ով և տարածվում GPLv3 լիցենզիայի ներքո: Բաղադրիչները տրամադրվում են Vim-ի, Emacs-ի, VSCode-ի, Sublime-ի, Atom-ի և տարբեր շրջանակների հետ ինտեգրվելու համար, որոնք աջակցում են GCC-ի հետ համատեղելի սխալների հաղորդմանը:
Այն աջակցում է կոդի մեջ շարահյուսական սխալների բացահայտմանը, որոնք հանգեցնում են նրան, որ թարգմանիչը սխալ է ցուցադրում կատարման պահին, և իմաստային խնդիրներ, որոնց պատճառով կատարումը չի խաթարվում, բայց սկրիպտի վարքագծի անոմալիաներ են առաջանում: Անալիզատորը կարող է նաև բացահայտել խցանումները, ոչ ակնհայտ խնդիրներն ու թակարդները, որոնք որոշակի հանգամանքներում կարող են հանգեցնել խափանումների:
Հայտնաբերված սխալների դասերից կարող ենք նշել հատուկ նիշերից խուսափելու և դրանք չակերտներում շրջանակելու հետ կապված խնդիրներ, պայմանական արտահայտությունների սխալներ, հրամանների սխալ օգտագործում, ժամանակի և ամսաթվերի մշակման խնդիրներ և սկսնակների համար բնորոշ շարահյուսական սխալներ: Օրինակ՝ «[[ $foo==0 ]]» համեմատելիս բացատների բացակայությունը, «var = 42» բացատների առկայությունը կամ «$foo=42» վերագրելիս $ նշանի նշումը, փոփոխականների օգտագործումը։ առանց չակերտների «echo $1», լրացուցիչ քառակուսի փակագծերի նշում «tr -cd '[a-zA-Z0-9]'»,
Բացի այդ, այն աջակցում է կոդերի ոճը բարելավելու, տեղափոխելիության խնդիրները վերացնելու և սկրիպտների հուսալիությունը մեծացնելու առաջարկությունների ելքը: Օրինակ՝ «echo $[1+2]»-ի փոխարեն կառաջարկվի օգտագործել «$((..))» շարահյուսությունը, «rm -rf «$STEAMROOT/»*» կոնստրուկցիան կնշվի որպես ոչ անվտանգ: և կարող է ջնջել արմատային գրացուցակը, եթե փոփոխականը լրացված չէ $STEAMROOT, և «echo {1..10}»-ի օգտագործումը կնշվի որպես անհամատեղելի dash և sh-ի հետ:
Նոր տարբերակում.
- Ավելացվել է նախազգուշացում այնպիսի արտահայտությունների համար, ինչպիսին է «տեղական միայն կարդալու համար»:
- Ավելացվել է անհասանելի հրամանների մասին նախազգուշացում:
- «Հայտարարել x=1 y=$x»-ին ավելացվել է հետհղումների մասին նախազգուշացում:
- Ավելացվեց նախազգուշացում, եթե $? օգտագործվում է echo-ի, printf-ի, [ ], [[ ]]-ի և թեստի վերադարձի կոդը տպելու համար:
- Ավելացվեց ((..))inarray[((idx))]=val.
- Ավելացվեց թվաբանական համատեքստերում կրկնակի փակագծերը միացնելու առաջարկություն:
- Ավելացրել է a[(x+1)]=val արտահայտության մեջ փակագծերը հեռացնելու առաջարկ:
Source: opennet.ru