Skip to main content

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

FerramentaShell SuportadoNº de ChecksMaturidade
ShellChecksh, bash, dash, ksh150+✅ Estável
shellhardenbash1 (quoting)✅ Estável
checkbashismsPOSIX sh~20✅ Estável
ZshCheckzsh~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