Comparação com Outras Ferramentas
O Problema
Ferramentas de linting para shell existem há anos, mas quase todas foram projetadas para bash ou POSIX sh. Quando você tenta usá-las com scripts zsh, o resultado é frustrante.
Ferramentas Disponíveis
ShellCheck
O que é: O padrão da indústria. 150+ verificações, maduro, usado por milhões de desenvolvedores.
Limitação: Não suporta zsh. Retorna erro SC1103 quando você tenta --shell=zsh. A análise é feita com parser de bash, então sintaxe específica de zsh (loops for (1 2 3), arrays ${array[@]}, here-strings <<<) não é compreendida corretamente.
Quando usar: Para scripts bash. É a ferramenta mais completa disponível.
shellharden
O que é: Ferramenta Rust focada em adicionar aspas automaticamente.
Limitação: Apenas bash. Não processa scripts zsh.
Quando usar: Para impor disciplina de quoting em bases de código bash.
checkbashisms
O que é: Verifica se scripts /bin/sh usam recursos não-POSIX.
Limitação: Baseado em regex. Falsos positivos são comuns. Não verifica corretude, apenas conformidade.
Quando usar: Para empacotamento Debian que precisa de conformidade POSIX.
ZshCheck
O que é: Uma alternativa simples para scripts zsh. Focada no parsing correto da sintaxe zsh.
Estado atual: Versão 0.2.1, ~10 verificações, parsing com tree-sitter.
Limitação: Muito mais simples que alternativas maduras. Não tem o volume de regras de ferramentas estabelecidas.
Quando usar: Quando você precisa de análise que entenda sintaxe zsh nativa.
Resumo Comparativo
| Ferramenta | Shell Suportado | Nº de Checks | Maturidade |
|---|---|---|---|
| ShellCheck | sh, bash, dash, ksh | 150+ | ✅ Estável |
| shellharden | bash | 1 (quoting) | ✅ Estável |
| checkbashisms | POSIX sh | ~20 | ✅ Estável |
| ZshCheck | zsh | ~10 | 🚧 Inicial |
Nossa Proposta
Não estamos tentando competir com ShellCheck ou outras ferramentas maduras. Elas são excelentes no que fazem.
O ZshCheck existe para um caso específico: quando você escreve scripts zsh com sintaxe que não é compatível com bash, e precisa de uma ferramenta que entenda essa sintaxe, não apenas tolere.
Recomendação prática:
- Scripts bash → Use ShellCheck
- Scripts zsh simples → ShellCheck pode funcionar
- Scripts zsh com sintaxe específica → ZshCheck é uma opção
Feedback
Encontrou algo errado nesta comparação? Abra uma issue no GitHub.
Última atualização: Abril 2026