-
Notifications
You must be signed in to change notification settings - Fork 0
Configuracion
Hay dos archivos de configuración, ambos opcionales: la herramienta funciona sin ninguno.
-
analyzer_config.json— colores, íconos, pesos del score y detector de acoplamiento. Se busca desde el directorio donde ejecutas el comando. -
analyzer.yml— defaults por proyecto (output dirs, gates de CI, formato). Se busca en la raíz del proyecto analizado.
Sin config, el analizador usa defaults genéricos para cualquier proyecto Android. Para personalizar colores, íconos y estilos, crea un analyzer_config.json en el directorio desde donde ejecutas el comando:
Instalado con pipx:
# macOS / Linux
curl -o analyzer_config.json \
https://raw.githubusercontent.com/pfranccino/android-gradle-analyzer/main/analyzer_config.example.json
# Windows (PowerShell)
Invoke-WebRequest `
-Uri "https://raw.githubusercontent.com/pfranccino/android-gradle-analyzer/main/analyzer_config.example.json" `
-OutFile "analyzer_config.json"Con el repo clonado:
cp analyzer_config.example.json analyzer_config.json{
"icons": {
"payment": "💸",
"cart": "🛒",
"auth": "🔐"
},
"colors": {
"cycle": "#FF0000"
}
}Solo incluye los campos que quieres cambiar — el resto usa defaults.
Orden de búsqueda:
-
--config <path>explícito -
analyzer_config.jsonen el directorio actual (donde ejecutas el comando) - Defaults internos
Tip: si siempre analizas el mismo proyecto, pon el
analyzer_config.jsonen la raíz de ese proyecto y ejecuta el comando desde ahí. Si analizas varios proyectos, usa--config ~/mi-config.json.
Detecta una hoja (feature o app: I alto, en la punta del grafo) de la que otros módulos dependen — señal de que código común quedó atrapado arriba en vez de bajar a core/shared. No depende de nombres ni de plugins: se basa en las métricas que el tool ya calcula. core/common quedan excluidos solos por tener I bajo.
Funciona sin configuración con estos defaults. Es advisory (penalty: 0 → solo aparece en el reporte, no afecta el score); súbelo para activar el gate en CI.
{
"coupling_limits": {
"leaf_instability": 0.70,
"leaf_max_ca": 1,
"leaf_penalty": 0,
"app_max_ca": 0,
"app_penalty": 0
},
"coupling_overrides": { "legacy:util": "ignore" }
}El punto de entrada se detecta por el plugin com.android.application; coupling_overrides permite forzar ("app"/"leaf") o excluir ("ignore") módulos puntuales.
Si creas un archivo analyzer.yml en la raíz del proyecto Android analizado, las herramientas lo leerán automáticamente y usarán sus valores como defaults. Los flags de CLI siempre tienen prioridad sobre el yml.
sanity:
fail_on_cycle: true
fail_on_score_below: 70
output_dir: reports/sanity
impact:
default_module: app
output_dir: reports/impact
analyzer:
output_dir: reports/diagrams
format: mermaid
engine: auto
externals:
output_dir: reports/external-callsCampos por sección:
| Sección | Campo | CLI equivalente |
|---|---|---|
sanity |
fail_on_cycle |
--fail-on-cycle |
sanity |
fail_on_score_below |
--fail-on-score-below N |
sanity |
output_dir |
--output-dir |
sanity |
engine |
--engine |
impact |
default_module |
segundo argumento posicional |
impact |
output_dir |
--output-dir |
impact |
engine |
--engine |
analyzer |
output_dir |
--output-dir |
analyzer |
format |
--format |
analyzer |
engine |
--engine |
externals |
output_dir |
--output-dir |
externals |
engine |
--engine |
Reglas:
- El yml se busca en la ruta que pasas como primer argumento, no en el CWD.
- Los flags de CLI siempre ganan sobre el yml.
- Requiere
pyyaml(instalación opcional:pip install android-gradle-analyzer[yaml]). Si no está instalado, el yml se ignora sin error.
| Scope | Categoría visual |
|---|---|
api, implementation, compileOnly
|
Flecha sólida (compile) |
kapt, annotationProcessor
|
Flecha punteada (build) |
testImplementation, androidTestImplementation, debugImplementation, releaseImplementation, runtimeOnly, testRuntimeOnly
|
Flecha punteada con label (test/debug) |