Ferramenta de análise estática para PHP que encontra bugs no código sem executá-lo.
tach-org/tach
Ferramenta Python escrita em Rust que visualiza e aplica regras para dependências entre módulos e interfaces públicas em uma base de código.
- Estrelas
- 2,862
- Forks
- 98
- Issues abertas
- 56
- Último commit
- há 9 dias
O que é?
Tach ajuda projetos Python a preservar os limites entre módulos. Você declara quais módulos podem depender de quais outros, e a ferramenta verifica se os imports estão de acordo com essas declarações, sinalizando os que atravessam limites indevidos. Ela também pode restringir chamadas entre módulos à interface pública declarada por cada módulo e detectar ciclos no grafo de dependências.
A ferramenta foi projetada para arquiteturas de monólito modular e pode ser adotada aos poucos, permitindo que as equipes marquem apenas os pacotes que querem acompanhar. A configuração é interativa por meio de `tach init`, e `tach check` retorna um código diferente de zero quando há violações, facilitando a execução no CI ou como hook de pre-commit.
Tach também pode renderizar o grafo de dependências como visualização web com `tach show --web` ou como arquivo GraphViz DOT local. Já `tach report` lista as dependências e os usos de um caminho especificado.
Recursos principais
- 01Verifica os imports de acordo com as dependências entre módulos declaradas
- 02Restringe chamadas entre módulos às interfaces públicas
- 03Detecta ciclos no grafo de dependências
- 04Permite adoção incremental, marcando apenas os módulos selecionados
- 05Visualiza as dependências em um grafo web ou em formato GraphViz DOT
- 06Integra-se ao CI e a hooks de pre-commit, retornando um código diferente de zero quando há violações
Casos de uso
- Aplicar limites em camadas ou módulos em um monólito Python de grande porte
- Evitar imports indesejados entre pacotes em um monorepo Python
- Introduzir gradualmente regras de arquitetura em uma base de código existente
- Analisar a estrutura de dependências de um projeto por meio de um grafo gerado
Início rápido
- 1
Instale o Tach pelo PyPI
pip install tach - 2
Execute a configuração interativa para definir os limites entre módulos
tach init - 3
Aplique os limites configurados a partir da raiz do projeto
tach check
Antes de usar
- Só oferece suporte a bases de código Python.
- Aplica os limites estaticamente e exige que as dependências entre módulos sejam declaradas manualmente em tach.toml.
Em coleções
Tópicos
Perguntas frequentes
- O que é tach?
- Ferramenta Python escrita em Rust que visualiza e aplica regras para dependências entre módulos e interfaces públicas em uma base de código. Tach ajuda projetos Python a preservar os limites entre módulos. Você declara quais módulos podem depender de quais outros, e a ferramenta verifica se os imports estão de acordo com essas declarações, sinalizando os que atravessam limites indevidos. Ela também pode restringir chamadas entre módulos à interface pública declarada por cada módulo e detectar ciclos no grafo de dependências.
- tach é gratuito? Qual é a licença?
- tach é open source sob a licença MIT. Confira os termos da licença antes de usá-lo em produtos comerciais.
- tach ainda é mantido?
- Manutenção ativa. O último commit de tach foi em 29 de out. de 2026.
- Para que posso usar tach?
- Aplicar limites em camadas ou módulos em um monólito Python de grande porte Evitar imports indesejados entre pacotes em um monorepo Python Introduzir gradualmente regras de arquitetura em uma base de código existente Analisar a estrutura de dependências de um projeto por meio de um grafo gerado
- Como instalar tach?
- Instale o Tach pelo PyPI: pip install tach Execute a configuração interativa para definir os limites entre módulos: tach init Aplique os limites configurados a partir da raiz do projeto: tach check
- Onde consigo tach?
- O código-fonte e as instruções de instalação estão no GitHub: https://github.com/tach-org/tach
Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.
Projetos relacionados
Um linter rápido e configurável para Go, que substitui o golint e oferece regras e formatadores de saída personalizados.
CLI em Go que executa qualquer linter ou ferramenta de análise de código e publica os resultados como comentários de review no GitHub, GitLab ou Bitbucket, apenas nas linhas alteradas.
Analisador estático de código Python que detecta erros, aplica padrões de codificação e aponta problemas no código sem executá-lo.
Um linter extensível para ECMAScript/JavaScript que identifica padrões problemáticos no código e corrige muitos deles automaticamente.
Ferramenta de análise estática que encontra bugs em código Java, C, C++ e Objective-C sem executá-lo.