codarch analyze
Analiza un repositorio y escribe el snapshot cc.json.
Qué analiza
Sección titulada «Qué analiza»El recorrido lee las extensiones de cada lenguaje y parsea cada una con su gramática:
| Lenguaje | Extensiones |
|---|---|
| TypeScript / JavaScript | .ts .tsx .mts .cts .js .jsx .mjs .cjs |
| Java | .java |
| Python | .py |
| Go | .go |
| C# | .cs |
De todos salen las métricas del fichero (loc, rloc, functions, maxComplexity,
maxFunctionLength), sus símbolos con su complejidad y sus imports como aristas. Además se miden sin
árbol, solo para la lente de migración, Rust (.rs) y los artefactos .wasm y .node.
Los imports no apuntan a lo mismo en todos los lenguajes, y el análisis lo respeta:
- TS/JS: módulos, paquetes, alias del
tsconfigy workspaces. - Java: el fichero
a/b/C.java, buscado por sufijo de ruta; vale igual para Maven, Gradle o un proyecto plano. - Python: el módulo
a/b.pyo el paquetea/b/__init__.py, y los relativos desde el paquete del fichero. - Go: el paquete entero —todos los
.gode la carpeta—, con el prefijo delgo.mod. - C#: los ficheros que declaran el
namespacedelusing, que se resuelven al final del análisis.
Un import que no se resuelve se cuenta y se lista con su línea; no se inventa una arista. Un lenguaje que no está en la tabla no se analiza: sus ficheros no aparecen en el mapa y el resumen lo avisa si no queda ninguno que leer.
La lente de migración no cambia: sigue siendo JS/TS → Rust, así que un fichero Java, Python, Go o C# no tiene estado, deuda ni cruces.
codarch analyze [ruta] [opciones]Opciones
Sección titulada «Opciones»| Opción | Qué hace |
|---|---|
-o, --out <dir> | Carpeta de salida. Por defecto <ruta>/.codarch. |
--ignore <patrón> | Suma una exclusión al alcance. Repetible. |
--config <file> | Alcance YAML. Por defecto .codarch.yml si existe. |
--no-config | No lee el YAML de alcance. |
--project <nombre> | Nombre del proyecto en el snapshot. |
--no-git | No lee el churn del historial git. |
--no-lint | No ejecuta el lint del proyecto. |
--history | Guarda además la foto en .codarch-history/. |
-h, --help | Ayuda. |
-v, --version | Versión. |
Escribe snapshot.cc.json en la carpeta de salida y, a su lado, rest.cc.json: el mapa de lo que no es código —documentos, configuración y assets— en su propio snapshot y con su propio checksum, así que cambiar un .md no mueve el del código. Si crea .codarch/ en la raíz, añade .codarch/ al .gitignore (si la carpeta ya existía, no lo toca). Imprime un resumen: raíz, ruta y tamaño de los dos snapshots, el lint (con su cobertura), ficheros, carpetas, aristas, ciclos, imports (externos, builtins, type-only, sin resolver), migración, caché de parseo, alcances anidados y tiempo.
Si el proyecto tiene lint —su configuración y su herramienta, como en codarch lint—,
analyze lo ejecuta y escribe también .codarch/lint.repmod.json, firmado con el checksum del snapshot que
acaba de escribir. Es una lente más del análisis: no entra en cc.json —el checksum depende del código,
no de lo que tengas instalado— y serve no la vuelve a medir mientras el artefacto sea de ese mismo
árbol. --no-lint se la salta.
La caché de parseo queda en .codarch/parse-cache.json y la lista de alcances anidados en .codarch/scopes.json: son derivadas, se pueden borrar, y sirven para que el análisis que contiene a este alcance no vuelva a parsear lo que ya está parseado (codarch scopes).
La carpeta es del producto, no un cajón: al terminar, analyze borra de .codarch/ lo que no reconoce
—un lint.json de una versión anterior, un mapa estático, una carpeta suelta— y lo dice con sus nombres en
un aviso. El estado local (preferencias, cachés, cadenas, alcances y capturas) se conserva aunque esta
pasada no lo escriba. Con --out no se limpia nada: esa carpeta la elegiste tú.

Ejemplos
Sección titulada «Ejemplos»codarch analyze .codarch analyze . -o .codarch --project "Mi proyecto" --historyCódigos de salida
Sección titulada «Códigos de salida»| Código | Significado |
|---|---|
0 | Snapshot escrito. |
1 | Argumento u opción inválida, ruta inexistente, .codarch.yml inválido o no se pudo escribir la salida. |