-
Notifications
You must be signed in to change notification settings - Fork 0
Como funciona
pfranccino edited this page Jun 7, 2026
·
1 revision
- Si existe
settings.gradle.ktsosettings.gradleen la raíz, se usa como fuente de verdad (extrae losinclude(":module")). - Si no,
rglob()busca todos losbuild.gradle*como fallback. - Paths → nombres:
payments/home→payments:home.
- Lee cada
build.gradle/build.gradle.kts. - Para
.kts: usa tree-sitter (si está instalado) para obtener un AST real — maneja multilínea, comentarios y parámetros nombrados. Si no está disponible, cae en regex. - Para
.gradle: preprocesa el contenido (elimina comentarios//y/* */, colapsa declaraciones multilínea) y aplica regex. - Soporta formato clásico (
project(":foo:bar")) y type-safe accessors (projects.foo.barBaz). - Matching exacto contra la lista de módulos conocidos — sin heurísticas de prefijo.
El motor dinámico (
--engine dynamic) reemplaza los pasos 1–4 ejecutando Gradle y leyendo lo que resuelve. Ver Motor estático vs dinámico.
- Clasifica módulos por tipo (common, gateway, features).
- Aplica colores según clasificación.
- Genera PlantUML/Mermaid agrupados por categoría visual.
- Marca en rojo los módulos involucrados en ciclos.
En gradle_analyzer.py, función generate_plantuml():
"skinparam nodesep 150", # Horizontal
"skinparam ranksep 150", # Vertical
"skinparam padding 30", # Interno| Estilo | nodesep / ranksep / padding |
|---|---|
| Compacto | 60 / 60 / 10 |
| Balanceado | 100 / 100 / 20 |
| Espacioso | 150 / 150 / 30 |
android-gradle-analyzer/
├── README.md
├── EXAMPLES.md
├── CHANGELOG.md · LICENSE · CONTRIBUTING.md
├── pyproject.toml ← fuente única de dependencias
├── menu.py ← wrapper: python3 menu.py
├── menu/ ← paquete del menú interactivo
│ ├── actions.py · branding.py · exporter.py
│ ├── prompts.py · state.py · ui.py
├── analyzer_utils.py ← utilidades compartidas
├── dependency_engine.py ← motor dinámico (vía Gradle)
├── analyzer_config.example.json ← config de ejemplo
├── gradle_analyzer.py ← script 1: dependencias internas
├── external_callers.py ← script 2: llamadas externas
├── gradle_sanity.py ← script 3: sanidad + score
├── gradle_impact.py ← script 4: impacto de cambios
├── examples/
│ └── github-actions-dependency-health.yml
├── scripts/
│ ├── bump_version.py ← sincroniza versión y guía el release
│ └── extract_changelog.py
└── tests/ ← suite + fixtures reproducibles