Достъпен ShellCheck 0.9, статичен анализатор за shell скриптове

Публикувана е версията на проекта ShellCheck 0.9, която развива системата за статичен анализ на shell скриптове, поддържаща откриването на грешки в скриптове с оглед особеностите на bash, sh, ksh и dash. Кодът на проекта е написан на Haskell и се разпространява под лицензия GPLv3. Предоставят се компоненти за интеграция с Vim, Emacs, VSCode, Sublime, Atom и различни интегрирани среди, поддържащи изхода за грешки, съвместим с GCC.

Достъпен ShellCheck 0.9, статичен анализатор за shell скриптове

Поддържа се откриването на синтактични грешки в кода, които водят до изпълнение на интерпретатора с грешка, както и семантични проблеми, при които изпълнението не се прекъсва, но се наблюдават аномалии в поведението на скрипта. Анализаторът може също да идентифицира тесни места, неочевидни проблеми и капани, които могат да доведат до сривове при определени обстоятелства.

От класовете на откритите грешки могат да се отбележат проблеми с escaping на специални символи и обрамчване в кавички, грешки в условни изрази, неправилна употреба на команди, проблеми с обработката на време и дати, и типични синтактични грешки на начинаещи. Например, липсата на интервали при сравнение „[[ $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.

В новата версия:

  • Добавено е предупреждение за изрази от вида ‘local readonly foo’.
  • Добавено е предупреждение за недостъпност на команди.
  • Добавено е предупреждение за обратни референции в ‘declare x=1 y=$x’.
  • Добавено е предупреждение, ако $? се използва за извеждане на код на връщане от echo, printf, [ ], [[ ]] и test.
  • Добавена е препоръка за премахване на ((..))inarray[((idx))]=val.
  • Добавена е препоръка за комбиниране на двойни скоби в аритметични контексти.
  • Добавена препоръка за премахване на кръгли скоби в израза a[(x+1)]=val.

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster