Поиск по сайту:

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. Поделитесь с нами своими мыслями в разделе комментариев ниже.

Знаете ли вы какие-либо другие подобные инструменты? Если да, то поделитесь информацией о них также в комментариях.