ShellCheck: статический анализатор для сценариев оболочки
ShellCheck — это статический анализатор для сценариев оболочки (bash/sh), помогающий выявлять синтаксические и семантические ошибки. Он ориентирован как на новичков, так и на более опытных пользователей, подсказывая, где могут произойти сбои в работе скрипта.
Проект интересен тем, что не только указывает на ошибки, но и разъясняет причины их возникновения. Например, он помогает разобраться с "криптичными" ошибками синтаксиса и предлагает предупреждения о неочевидных проблемах, которые могут проявиться при изменении окружения или версии оболочки. Использование ShellCheck может значительно повысить качество и надежность скриптов.
Код написан на Haskell и доступен для компиляции из исходников, но также можно запустить его из терминала сразу после установки. ShellCheck доступен под лицензией GPLv3. Учти, что инструмент может не распознавать специфические для некоторых дистрибутивов функции оболочки.
Проект ShellCheck — это инструмент статического анализа для скриптов на языке оболочки bash/sh, который предоставляет предупреждения и рекомендации по коду. Его цель — помочь пользователям, начиная с новичков, избежать распространенных ошибок, улучшить качество кода и сделать его более читаемым. ShellCheck может указать на синтаксические ошибки, семантические проблемы и другие подводные камни, которые могут вызвать сбои в работе скриптов.
Как использовать
Существует несколько способов использования ShellCheck:
- Веб-сервис: Можно просто вставить скрипт на сайте shellcheck.net и получить мгновенную обратную связь.
- В терминале: Запусти команду
shellcheck yourscriptв терминале для мгновенного вывода результатов. - В редакторах: ShellCheck поддерживается во множестве текстовых редакторов, включая Vim, Emacs, Sublime, VSCode и другие.
- В сборках или тестах: Можно интегрировать ShellCheck в процессы сборки, используя коды выхода, чтобы автоматически проверять скрипты на наличие предупреждений.
Установка
ShellCheck можно установить несколькими способами, в зависимости от операционной системы:
- На Ubuntu/Debian:
sudo apt install shellcheck - На Arch Linux:
pacman -S shellcheck - На macOS:
brew install shellcheck - На Windows: Можно использовать Chocolatey:
choco install shellcheck. - Через Docker:
docker run --rm -v "$PWD:/mnt" koalaman/shellcheck:stable myscript
Также доступны предварительно скомпилированные бинарные файлы для различных платформ, которые можно скачать из релизов проекта.
Примеры ошибок
ShellCheck может помочь выявить множество распространенных ошибок, например:
- Некорректное использование кавычек:
echo $1без кавычек. - Ошибки в условных выражениях:
[[ $foo==0 ]]без пробелов. - Часто используемые неверные команды: например,
grep '*foo*' fileс использованием неправильных шаблонов.
Ограничения
ShellCheck не пытается навязывать принципы форматирования кода, так что для форматирования можно использовать другие инструменты, такие как shfmt. Кроме того, для разных версий оболочки могут быть свои ограничения по совместимости, и важно учитывать это при написании скриптов.
Сообщество и поддержка
Если у тебя есть вопросы или ты сталкиваешься с багами, можно использовать трекер issues на GitHub для их сообщения. Также можно вносить вклад в проект, присылая патчи через pull request.
Радар проекта: 76 из 100 — зрелый и живой проект
- Импульс 33 ≈ 5 звёзд в день
- Темп разработки 64 38 коммитов за 12 недель
- Зрелость 100 проекту 13 лет, 30 релизов
- Сообщество 94 185 участников, 1973 форка
- Свежесть 96 последний коммит — 7 дней назад
- Быстрый старт 65 есть: команда установки, сайт/демо
- Готовность к продакшену 85 релиз v0.11.0, автосборка, тесты
- Безопасность и доверие 40 лицензия GPL-3.0
- Документация 97 README 21.2 тыс. знаков, 34 раздела, папка docs
- Экосистема 87 404 подписчика на обновления, 6 тем
Как считаем
Только открытые данные GitHub на 07.11.2026, без оценок нейросети. Каждая ось — от 0 до 100, итог — среднее.
- Импульс — звёзд в день: за время наших замеров, а пока их нет — за всю жизнь проекта; 200 в день — максимум.
- Темп разработки — коммитов за последние 12 недель; 300 — максимум. Пока GitHub не досчитал статистику, ось не учитывается.
- Зрелость — возраст проекта (3 года — максимум) и число релизов (30 — максимум), поровну.
- Сообщество — участников с коммитами (200 — максимум) и форков (5000 — максимум), поровну.
- Свежесть — дней с последнего коммита: сегодня — 100, полгода и больше или архив — 0.
- Быстрый старт — в README есть команда установки, раздел «быстрый старт» или примеры использования, в репозитории — Docker и папка примеров, у проекта есть сайт или демо.
- Готовность к продакшену — релизы, версия 1.0 и выше, автосборка (GitHub Actions), тесты, лицензия, журнал изменений.
- Безопасность и доверие — открытая лицензия (своя — половина балла), политика безопасности (SECURITY.md), проект организации, правила для участников, не в архиве.
- Документация — объём и структура README, папка docs или сайт, оценка «здоровья сообщества» GitHub.
- Экосистема — звёзды (50 тыс. — максимум), подписчики на обновления (1000 — максимум), темы репозитория.
Открыть на GitHub: koalaman/shellcheck →
RepoRadar