ShellCheck 0.9-ը հասանելի է, ստատիկ անալիզատոր՝ shell սկրիպտների համար

Հրապարակվել է ShellCheck 0.9 նախագծի թողարկումը, որը մշակում է shell սկրիպտների ստատիկ վերլուծության համակարգ, որն աջակցում է սկրիպտներում սխալների նույնականացմանը՝ հաշվի առնելով bash, sh, ksh և dash հատկանիշները: Ծրագրի կոդը գրված է Haskell-ով և տարածվում GPLv3 լիցենզիայի ներքո: Բաղադրիչները տրամադրվում են Vim-ի, Emacs-ի, VSCode-ի, Sublime-ի, Atom-ի և տարբեր շրջանակների հետ ինտեգրվելու համար, որոնք աջակցում են GCC-ի հետ համատեղելի սխալների հաղորդմանը:

ShellCheck 0.9-ը հասանելի է, ստատիկ անալիզատոր՝ shell սկրիպտների համար

Այն աջակցում է կոդի մեջ շարահյուսական սխալների բացահայտմանը, որոնք հանգեցնում են նրան, որ թարգմանիչը սխալ է ցուցադրում կատարման պահին, և իմաստային խնդիրներ, որոնց պատճառով կատարումը չի խաթարվում, բայց սկրիպտի վարքագծի անոմալիաներ են առաջանում: Անալիզատորը կարող է նաև բացահայտել խցանումները, ոչ ակնհայտ խնդիրներն ու թակարդները, որոնք որոշակի հանգամանքներում կարող են հանգեցնել խափանումների:

Հայտնաբերված սխալների դասերից կարող ենք նշել հատուկ նիշերից խուսափելու և դրանք չակերտներում շրջանակելու հետ կապված խնդիրներ, պայմանական արտահայտությունների սխալներ, հրամանների սխալ օգտագործում, ժամանակի և ամսաթվերի մշակման խնդիրներ և սկսնակների համար բնորոշ շարահյուսական սխալներ: Օրինակ՝ «[[ $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

Добавить комментарий