Herramienta de análisis estático para PHP que detecta errores en el código sin ejecutarlo.
tach-org/tach
Una herramienta de Python escrita en Rust que visualiza y hace cumplir las dependencias entre módulos y sus interfaces públicas en una base de código.
- Estrellas
- 2,861
- Forks
- 98
- Issues abiertos
- 56
- Último commit
- hace 8 días
¿Qué es?
Tach ayuda a los proyectos de Python a mantener intactos los límites entre módulos. Defines de qué módulos puede depender cada uno y la herramienta compara las importaciones con esas declaraciones, señalando las que cruzan límites que no deberían. También puede limitar las llamadas entre módulos a la interfaz pública declarada por cada módulo y detectar ciclos en el grafo de dependencias.
Está diseñada para arquitecturas de monolito modular y puede adoptarse de forma gradual, por lo que los equipos pueden marcar solo los paquetes que quieren supervisar. La configuración es interactiva mediante `tach init`, y `tach check` devuelve un código distinto de cero si detecta incumplimientos, lo que facilita ejecutarlo en CI o como hook de pre-commit.
Tach también puede mostrar el grafo de dependencias, ya sea como vista web con `tach show --web` o como archivo GraphViz DOT local. Además, `tach report` enumera las dependencias y los usos de una ruta determinada.
Funciones clave
- 01Compara las importaciones con las dependencias declaradas entre módulos
- 02Limita las llamadas entre módulos a las interfaces públicas
- 03Detecta ciclos en el grafo de dependencias
- 04Permite una adopción gradual al marcar solo los módulos seleccionados
- 05Visualiza las dependencias como un grafo web o en formato GraphViz DOT
- 06Se integra con CI y hooks de pre-commit mediante un código de salida distinto de cero si detecta incumplimientos
Casos de uso
- Hacer cumplir los límites entre capas o módulos en un monolito grande de Python
- Evitar importaciones no deseadas entre paquetes de un monorepo de Python
- Introducir gradualmente reglas de arquitectura en una base de código existente
- Revisar la estructura de dependencias de un proyecto mediante un grafo generado
Inicio rápido
- 1
Instala Tach desde PyPI
pip install tach - 2
Ejecuta la configuración interactiva para definir los límites entre módulos
tach init - 3
Aplica los límites configurados desde la raíz del proyecto
tach check
Antes de usarlo
- Solo admite bases de código Python.
- Aplica los límites de forma estática y requiere declarar manualmente las dependencias entre módulos en tach.toml.
En colecciones
Temas
Preguntas frecuentes
- ¿Qué es tach?
- Una herramienta de Python escrita en Rust que visualiza y hace cumplir las dependencias entre módulos y sus interfaces públicas en una base de código. Tach ayuda a los proyectos de Python a mantener intactos los límites entre módulos. Defines de qué módulos puede depender cada uno y la herramienta compara las importaciones con esas declaraciones, señalando las que cruzan límites que no deberían. También puede limitar las llamadas entre módulos a la interfaz pública declarada por cada módulo y detectar ciclos en el grafo de dependencias.
- ¿tach es gratuito? ¿Qué licencia tiene?
- tach es open source bajo la licencia MIT. Revisa los términos de la licencia antes de usarlo en productos comerciales.
- ¿tach sigue mantenido?
- Mantenimiento activo. El último commit de tach fue el 29 oct 2026.
- ¿Para qué puedo usar tach?
- Hacer cumplir los límites entre capas o módulos en un monolito grande de Python Evitar importaciones no deseadas entre paquetes de un monorepo de Python Introducir gradualmente reglas de arquitectura en una base de código existente Revisar la estructura de dependencias de un proyecto mediante un grafo generado
- ¿Cómo se instala tach?
- Instala Tach desde PyPI: pip install tach Ejecuta la configuración interactiva para definir los límites entre módulos: tach init Aplica los límites configurados desde la raíz del proyecto: tach check
- ¿Dónde consigo tach?
- El código fuente y las instrucciones de instalación están en GitHub: https://github.com/tach-org/tach
Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.
Proyectos relacionados
Un linter rápido y configurable para Go, compatible con golint y con soporte para reglas y formateadores de salida personalizados.
CLI de Go que ejecuta cualquier linter o herramienta de análisis de código y publica sus resultados como comentarios de revisión en GitHub, GitLab o Bitbucket, solo en las líneas modificadas.
Analizador estático de código Python que detecta errores, aplica estándares de codificación y señala malos olores de código sin ejecutarlo.
Un linter extensible para ECMAScript/JavaScript que detecta patrones problemáticos en el código y puede corregir muchos de ellos automáticamente.
Analizador estático que detecta errores en código Java, C, C++ y Objective-C sin ejecutarlo.