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}" ҳамчун номувофиқ бо тире ва sh таъкид карда мешавад.

Дар версияи нав:

  • Огоҳӣ барои ифодаҳо ба монанди "foo танҳо барои хондан маҳаллӣ" илова карда шуд.
  • Огоҳӣ дар бораи фармонҳои дастнорас илова карда шуд.
  • Огоҳӣ дар бораи истинодҳои бозгашт барои 'эълон кардани x=1 y=$x' илова карда шуд.
  • Огоҳӣ илова карда шуд, агар $? барои чоп кардани рамзи бозгашти echo, printf, [ ], [[ ]] ва санҷиш истифода мешавад.
  • Тавсияи иловашуда барои нест кардани ((..))inarray[((idx))]=val.
  • Тавсия барои пайваст кардани қавсҳои дукарата дар контекстҳои арифметикӣ илова карда шуд.
  • Тавсия барои хориҷ кардани қавсҳо дар ифодаи a[(x+1)]=val илова карда шуд.

Манбаъ: opennet.ru

Илова Эзоҳ