ShellCheck 0.9 қол жетімді, қабық сценарийлеріне арналған статикалық анализатор

ShellCheck 0.9 жобасының шығарылымы жарияланды, ол bash, sh, ksh және сызықша мүмкіндіктерін ескере отырып, сценарийлердегі қателерді анықтауды қолдайтын қабық сценарийлерін статикалық талдау жүйесін әзірледі. Жоба коды Haskell тілінде жазылған және GPLv3 лицензиясы бойынша таратылады. Құрамдас бөліктер Vim, Emacs, VSCode, Sublime, Atom және GCC-үйлесімді қате туралы есеп беруді қолдайтын әртүрлі фреймворктермен біріктіру үшін берілген.

ShellCheck 0.9 қол жетімді, қабық сценарийлеріне арналған статикалық анализатор

Ол орындау кезінде аудармашының қатені көрсетуіне әкелетін кодтағы синтаксистік қателерді де, семантикалық мәселелерді де анықтауды қолдайды, соның салдарынан орындалу бұзылмайды, бірақ сценарий әрекетінде ауытқулар орын алады. Сондай-ақ, анализатор белгілі бір жағдайларда сәтсіздікке әкелетін кедергілерді, айқын емес проблемаларды және тұзақтарды анықтай алады.

Анықталған қателер кластарының ішінде арнайы таңбалардан қашып шығу және оларды тырнақшаға жиектеу мәселелерін, шартты өрнектердегі қателерді, командаларды дұрыс пайдаланбауды, уақыт пен күндерді өңдеу мәселелерін және жаңадан бастаушыларға арналған типтік синтаксистік қателерді атап өтуге болады. Мысалы, «[[ $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

пікір қалдыру