ShellCheck — инструмент, показывающий предупреждения и предложения для сценариев оболочки
ShellCheck — это инструмент статического анализа, который отображает предупреждения и предложения относительно плохого кода в сценариях оболочки bash/sh. Его можно использовать несколькими способами: из Интернета, вставив свой сценарий оболочки в онлайн-редактор (Ace — автономный редактор кода, написанный на JavaScript) на https://www.shellcheck.net (он всегда синхронизируется с последней версией git). commit, и это самый простой способ опробовать ShellCheck) для мгновенной обратной связи.
Кроме того, вы можете установить его на свой компьютер и запустить с терминала, интегрировать его с текстовым редактором, а также в свои наборы сборки или тестирования.
В первую очередь ShellCheck делает три вещи:
- Он указывает и объясняет типичные синтаксические проблемы новичков, из-за которых оболочка выдает загадочные сообщения об ошибках.
- Он указывает и объясняет типичные семантические проблемы промежуточного уровня, которые заставляют оболочку вести себя странно и нелогично.
- В нем также указываются тонкие предостережения, крайние случаи и подводные камни, которые могут привести к сбою работающего сценария опытного пользователя при будущих обстоятельствах.
В этой статье мы покажем, как установить и использовать ShellCheck различными способами для поиска ошибок или плохого кода в сценариях оболочки в Linux.
Как установить и использовать ShellCheck в Linux
ShellCheck можно легко установить локально через менеджер пакетов, как показано ниже.
В Debian/Ubuntu
apt-get install shellcheck
На RHEL/CentOS
yum -y install epel-release
yum install ShellCheck
О Федоре
dnf install ShellCheck
После установки ShellCheck давайте посмотрим, как использовать ShellCheck различными методами, о которых мы упоминали ранее.
Использование ShellCheck из Интернета
Перейдите на https://www.shellcheck.net и вставьте свой сценарий в предоставленный редактор Ace. Вы увидите выходные данные в нижней части редактора, как показано на снимке экрана ниже.
В следующем примере сценарий тестовой оболочки состоит из следующих строк:
#!/bin/bash
#declare variables
MINARGS=2
E_NOTROOT=50
E_MINARGS=100
#echo values of variables
echo $MINARGS
echo $E_NONROOT
exit 0;
На снимке экрана выше первые две переменные E_NOTROOT и E_MINARGS объявлены, но не используются, ShellCheck сообщает о них как о «подозрительных ошибках»:
SC2034: E_NOTROOT appears unused. Verify it or export it.
SC2034: E_MINARGS appears unused. Verify it or export it.
Во-вторых, для эхо переменной E_NOTROOT было использовано неправильное имя (в операторе echo $E_NONROOT), поэтому ShellCheck показывает ошибку:
SC2153: Possible misspelling: E_NONROOT may not be assigned, but E_NOTROOT is
Опять же, когда вы смотрите на команды echo, переменные не заключены в двойные кавычки (помогает предотвратить подстановку и разделение слов), поэтому Shell Check отображает предупреждение:
SC2086: Double quote to prevent globbing and word splitting.
Использование ShellCheck из терминала
Вы также можете запустить ShellCheck из командной строки, мы будем использовать тот же сценарий оболочки, что и выше, следующим образом:
shellcheck test.sh
Использование ShellCheck из текстового редактора
Вы также можете просматривать предложения и предупреждения ShellCheck непосредственно в различных редакторах. Вероятно, это более эффективный способ использования ShellCheck: после сохранения файлов он показывает любые ошибки в коде.
В Vim используйте ALE или Syntastic (мы будем использовать это):
Начните с установки Pathogen, чтобы можно было легко установить Syntastic. Выполните команды ниже, чтобы получить файл pathogen.vim и необходимые ему каталоги:
mkdir -p ~/.vim/autoload ~/.vim/bundle && curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim
Затем добавьте это в свой файл ~/.vimrc:
execute pathogen#infect()
После того как вы установили патоген, вы можете поместить синтаксис в ~/.vim/bundle следующим образом:
cd ~/.vim/bundle && git clone --depth=1 https://github.com/vim-syntastic/syntastic.git
Затем закройте vim и запустите его заново, чтобы перезагрузить, затем введите команду ниже:
:Helptags
Если все пойдет хорошо, у вас должна быть интегрирована ShellCheck с Vim. На следующих снимках экрана показано, как это работает с использованием того же сценария, что и выше.
Если после выполнения описанных выше действий вы получите сообщение об ошибке, возможно, вы неправильно установили Pathogen. Повторите шаги, но убедитесь, что вы выполнили следующее:
- Созданы каталоги ~/.vim/autoload и ~/.vim/bundle.
- В ваш файл ~/.vimrc добавлена строка выполнения патогена#infect().
- Сделал ли git-клон Syntastic внутри ~/.vim/bundle.
- Используйте соответствующие разрешения для доступа ко всем вышеуказанным каталогам.
Вы также можете использовать другие редакторы для проверки плохого кода в сценариях оболочки, например:
- В Emacs используйте Flycheck.
- В Sublime используйте SublimeLinter.
- В Atom используйте Linter.
- В большинстве других редакторов используйте совместимость ошибок GCC.
Примечание. Используйте галерею плохого кода, чтобы выполнить дополнительную проверку ShellCheck.
Репозиторий ShellCheck на Github: https://github.com/koalaman/shellcheck
Вот и все! В этой статье мы показали, как установить и использовать ShellCheck для поиска ошибок или плохого кода в сценариях оболочки в Linux. Поделитесь с нами своими мыслями в разделе комментариев ниже.
Знаете ли вы какие-либо другие подобные инструменты? Если да, то поделитесь информацией о них также в комментариях.