Skip to content

Configuracion

pfranccino edited this page Jun 7, 2026 · 1 revision

Configuración

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.

analyzer_config.json

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

Ejemplo

{
  "icons": {
    "payment": "💸",
    "cart":    "🛒",
    "auth":    "🔐"
  },
  "colors": {
    "cycle": "#FF0000"
  }
}

Solo incluye los campos que quieres cambiar — el resto usa defaults.

Orden de búsqueda:

  1. --config <path> explícito
  2. analyzer_config.json en el directorio actual (donde ejecutas el comando)
  3. Defaults internos

Tip: si siempre analizas el mismo proyecto, pon el analyzer_config.json en la raíz de ese proyecto y ejecuta el comando desde ahí. Si analizas varios proyectos, usa --config ~/mi-config.json.

Detector de "lógica compartida mal ubicada" (coupling_limits)

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.


analyzer.yml (config por proyecto)

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-calls

Campos 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.

Scopes soportados

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)

Clone this wiki locally