Introdução ao ShellCheck
- ShellCheck é uma ferramenta que encontra bugs em scripts de shell.
- Pode ser instalado localmente via cabal, apt, dnf, pkg e brew.
- Ao colar um script, o ShellCheck exibe os resultados da análise.
Recursos do ShellCheck
- O ShellCheck pode ser usado livremente sob a licença GPLv3.
- Está documentado na Wiki do ShellCheck, e o código-fonte pode ser consultado no GitHub.
- Já vem empacotado na maioria das distribuições ou gerenciadores de pacotes.
- É suportado como linter integrado nos principais editores, e o código de repositórios no GitHub pode ser verificado automaticamente via CodeClimate, Codacy e CodeFactor.
- Foi escrito em Haskell, sendo adequado para usuários que tenham interesse nessa linguagem.
Agradecimentos
- Agradecimentos especiais aos apoiadores no GitHub Sponsors: Gitpod, Mercedes-Benz, BashSupport Pro, per1234, WhitewaterFoundry, cavcrosby, dcminter, photostructure, Cronitor, djdefi, steve-chavez e outros.
Opinião do GN⁺
- O ponto mais importante deste artigo é que o ShellCheck é uma ferramenta útil para encontrar bugs em scripts de shell.
- O fato de o ShellCheck ser gratuito, suportado em várias plataformas e editores, e fácil de usar pode ser interessante para muitas pessoas.
- Em especial, o apoio da comunidade de código aberto e o fato de ter sido desenvolvido em Haskell podem torná-lo atraente para desenvolvedores de software.
1 comentários
Comentários no Hacker News
Cuidados ao escrever scripts
-u(nounset) para gerar erro ao usar variáveis não declaradas. A exceção é quando, na expansão de arrays, um array vazio é considerado unbound.-n(noexec) para impedir a execução de comandos.-e(errexit) também é útil, mas é preciso ter em mente que apenas comandos “naked” que falham provocam a saída. Para evitar isso, prefere-se adicionar|| fail "..."ao comando.Descoberta de vulnerabilidade em shell scripts
$ENV_VARem$((1 + ENV_VAR)), dá para injetar código.Shellcheck e strictbash
Menções ao Shellcheck
Uso de Haskell e Turtle
Uso de Shellcheck e linters
.gitlab-ci.yml, o que dificulta a verificação. Foi criado um wrapper para inspecioná-los automaticamente.Servidor de linguagem para Bash
Efeito de aprendizado do Shellcheck
/bin/shde produção, aprendeu-se algo novo apesar da experiência escrevendo scripts desde os anos 80.Recomendação de uso do Bach
Shellcheck e tratamento de source/import
shé um pesadelo.