Доступен ShellCheck 0.9, статический анализатор для shell-скриптов

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3264
Зарегистрирован: 20.08.2022

#

Доступен ShellCheck 0.9, статический анализатор для shell-скриптов
Дата публикации:Tue, 27 Dec 2022 11:50:54 +0300


Опубликован выпуск проекта 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.

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


Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=58394

Жизнь за Нер'зула!

Ответить