Об этом проекте

ShellCheck — инструмент статического анализа для скриптов bash/sh, распространяемый под лицензией GNU GPLv3. Он сканирует скрипты и выводит предупреждения и рекомендации, не запуская их. Цели включают уяснение синтаксических ошибок для новичков, которые вызывают запутанные ошибки оболочки, семантические проблемы, заставляющие оболочки вести себя неожиданно, и тонкие нюансы или крайние случаи, которые могут сломать работающие скрипты позже. README содержит широкую галерею категорий обнаруженных проблем: проблемы с кавычками (переменные без кавычек, расширение тильды в кавычках, литеральные кавычки в переменных, преждевременное расширение trap), ошибки в условиях (постоянные выражения теста, пропущенные пробелы, регулярные выражения в =~ в кавычках, не поддерживаемые операторы [ ]), часто неправильно используемые команды (глобы в контексте регулярных выражений, перенаправление sudo, неправильное использование exec, неявная предпочтительность find), синтаксические ошибки для новичков (пробелы вокруг = в присваиваниях, массивы через запятую, else if), рекомендации по стилю (бесполезный cat, обратные кавычки vs $(), блоки перенаправления), ошибки данных и типов (присвоение массивов строкам, несоответствие количества аргументов printf, присваивания в подпроцессах), вопросы надежности (катастрофическое rm, глобы, которые могут стать опциями, инъекция shell в find -exec), и предупреждения о совместимости, связанные с shebang, аналогично checkbashisms. Опции использования: вставка скриптов на shellcheck.net, запуск `shellcheck yourscript` в терминале, интеграции с редакторами (Vim через ALE/Neomake/Syntastic, Emacs через Flycheck/Flymake, Sublime через SublimeLinter, Pulsar, VSCode, и совместимость с ошибками GCC для других редакторов), включение в сборочные или тестовые комплекты с использованием кодов выхода, примеры для Makefiles и Travis CI. README отмечает предустановленную доступность на сервисах, таких как Travis CI, Codacy, Code Climate, Code Factor, CircleCI, GitHub Actions (только Linux), Trunk Code Quality и CodeRabbit, и рекомендует фиксировать конкретную версию, чтобы избежать неожиданных сбоев сборки. Форматы вывода включают человекочитаемый текст с или без ANSI-цветов, JSON, CheckStyle-совместимый XML и предупреждения, совместимые с GCC, с документацией интеграции на вики-странице проекта. Установка доступна через многие менеджеры пакетов (Cabal, Stack, apt, pacman, emerge, yum, dnf, pkg, Homebrew, MacPorts, zypper, eopkg, Chocolatey, winget, scoop, conda-forge, Snap, Nix, Flox), Docker-образы (koalaman/shellcheck и shellcheck-alpine), предварительно скомпилированные бинарные файлы для Linux x86_64/armv6hf/aarch64, macOS aarch64/x86_64 и Windows x86, а также конфигурация предварительного коммита. Сборка из исходного кода требует Haskell и Cabal, с указанием примерно 2 ГБ оперативной памяти для компиляции, тесты запускаются через `cabal test`. Проблемы можно игнорировать через переменную окружения, командную строку, индивидуально или глобально в файле. Вклад принимается в виде pull-запросов GitHub под лицензией GPLv3, а README указывает на вики для подробных описаний каждого кода предупреждения и на shfmt для форматирования, который ShellCheck не настаивает на использовании.