Sobre o projeto
ShellCheck é uma ferramenta de análise estática para scripts bash/sh, licenciada sob a GNU GPLv3. Ele analisa scripts e relata avisos e sugestões em vez de executá-los.
Objetivos declarados incluem esclarecer problemas de sintaxe para iniciantes que geram erros confusos de shell, problemas semânticos intermediários que fazem o shell se comportar de forma contraintuitiva e armadilhas sutis ou casos especiais que podem quebrar scripts funcionalmente.
O README documenta uma ampla gama de categorias de problemas detectados: problemas de aspas (variáveis não citadas, expansão de tilde citada, aspas literais em variáveis, armadilhas de expansão antecipada), erros condicionais (expressões de teste constantes, espaços ausentes, expressões regulares citadas em =~, operadores [ ] não suportados), comandos frequentemente mal usados (globs em contextos de expressões regulares, redirecionamento de sudo, uso incorreto de exec, precedência implícita do find), erros de sintaxe para iniciantes (espaços em torno de = em atribuições, arrays separados por vírgulas, else if), sugestões de estilo (cat inútil, acentos graves vs $(), blocos de redirecionamento), erros de dados e tipagem (arrays atribuídos a strings, desequilíbrio de argumentos em printf, atribuições em subshells), preocupações com robustez (rm catastrófico, globs que podem se tornar opções, injeção de shell no find -exec) e avisos de portabilidade vinculados ao shebang, semelhantes a checkbashisms.
Opções de uso descritas: colar scripts no shellcheck.net, executar `shellcheck yourscript` em um terminal, integrações com editores (Vim via ALE/Neomake/Syntastic, Emacs via Flycheck/Flymake, Sublime via SublimeLinter, Pulsar, VSCode e compatibilidade GCC para outros editores), inclusão em suites de build ou testes usando códigos de saída, com exemplos para Makefiles e Travis CI. O README observa disponibilidade pré-instalada em serviços como Travis CI, Codacy, Code Climate, Code Factor, CircleCI, GitHub Actions (apenas Linux), Trunk Code Quality e CodeRabbit, recomendando fixar uma versão específica para evitar quebras inesperadas no build.
Formatos de saída incluem texto legível com ou sem cores ANSI, JSON, XML compatível com CheckStyle e avisos compatíveis com GCC, com documentação de integração na wiki do projeto.
Instalação é coberta por muitos gerenciadores de pacotes (Cabal, Stack, apt, pacman, emerge, yum, dnf, pkg, Homebrew, MacPorts, zypper, eopkg, Chocolatey, winget, scoop, conda-forge, Snap, Nix, Flox), imagens Docker (koalaman/shellcheck e shellcheck-alpine), binários pré-compilados para Linux x86_64/armv6hf/aarch64, macOS aarch64/x86_64 e Windows x86, além de configuração de hook pré-commit. Construção a partir de código-fonte requer Haskell e Cabal, com aproximadamente 2GB de RAM notados para compilação, e testes executados via `cabal test`.
Problemas podem ser ignorados via variável de ambiente, linha de comando, individualmente ou globalmente dentro de um arquivo. Contribuições são aceitas como pull requests do GitHub sob GPLv3, e o README aponta para a wiki para descrições detalhadas de cada código de aviso e para shfmt para formatação, que o ShellCheck não impõe deliberadamente.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.