Skip to main content

Mide el crecimiento de documentación en un repositorio Git

Project description

doc-meter

doc-meter

Mide el crecimiento de documentación en un repositorio Git a lo largo del tiempo. Itera sobre los commits, filtra archivos de documentación por extensión, acumula líneas netas y genera una gráfica de crecimiento — incluyendo comentarios en código fuente como indicador de documentación técnica.

Instalación

pip install -r requirements.txt

Requisitos: Python 3.10+ y Git en el PATH.

Uso

# Análisis básico — solo resumen en consola
python doc_meter.py /ruta/al/repo

# Guardar gráfica como imagen
python doc_meter.py /ruta/al/repo --output salida.png

# Agrupar por mes, solo branch main
python doc_meter.py /ruta/al/repo --interval month --branch main --output salida.png

# Solo resumen en consola (sin análisis de comentarios)
python doc_meter.py /ruta/al/repo --no-comments

# Exportar datos a CSV
python doc_meter.py /ruta/al/repo --output-csv datos.csv

# Gráfica y CSV al mismo tiempo
python doc_meter.py /ruta/al/repo --output salida.png --output-csv datos.csv

# Limitar a un rango de fechas
python doc_meter.py /ruta/al/repo --begin 2024-01-01 --end 2024-12-31 --output salida.png

# Solo desde una fecha (hasta hoy)
python doc_meter.py /ruta/al/repo --begin 2023-06-01 --output-csv datos.csv

Opciones

Argumento Descripción Default
repo Ruta al repositorio Git (requerido)
--interval Agrupación temporal: day, week, month week
--branch Branch a analizar branch actual
--output, -o Ruta para guardar la gráfica. Si se omite, no se genera gráfica.
--output-csv Ruta para exportar los datos como CSV
--begin Fecha de inicio del análisis (YYYY-MM-DD) hace un año
--end Fecha de fin del análisis (YYYY-MM-DD) hoy
--extensions Extensiones de documentación ver lista abajo
--no-comments Omitir análisis de comentarios en código fuente

Extensiones de documentación detectadas por defecto: .adoc .asc .asciidoc .ipynb .markdown .md .mdx .org .plantuml .puml .qmd .rst .tex .txt .wiki

Lenguajes analizados para comentarios: Python, JavaScript/TypeScript, C#, Java, C/C++, Go, Rust, Kotlin, Swift, Scala, Dart, Ruby, Shell, SQL, Lua, HTML, CSS/SCSS y más.

Salida

Consola: commits procesados, período, líneas añadidas/eliminadas/netas y total acumulado de comentarios en código.

Gráfica de dos paneles:

  • Superior: crecimiento acumulado, una línea por extensión de documentación + línea total (negra gruesa) + línea de comentarios en código fuente (naranja punteada).
  • Inferior: cambio neto por período (verde = crecimiento, rojo = reducción).

CSV (con --output-csv): una fila por período con las columnas date, total_docs, net_docs, una columna por cada extensión detectada y comments_src si se analizaron comentarios.

Ejemplo

Ejemplo de gráfica de crecimiento de documentación

Uso como GitHub Action

Publica el repositorio en GitHub y referencia la acción en cualquier workflow:

steps:
  - name: Checkout (full history)
    uses: actions/checkout@v4
    with:
      fetch-depth: 0

  - name: Medir crecimiento de documentación
    uses: {owner}/doc-meter@v1
    with:
      repo: .                     # directorio del repo (default: .)
      interval: month             # day | week | month
      output: docs_growth.png     # si se omite, no se genera gráfica
      output-csv: docs_growth.csv
      begin: '2024-01-01'         # opcional
      # end: '2024-12-31'         # opcional, default: hoy
      # branch: main              # opcional
      # no-comments: 'true'       # opcional

fetch-depth: 0 es obligatorio: sin él git log solo ve el commit más reciente.

Inputs

Input Descripción Default
repo Ruta al repositorio a analizar .
interval Agrupación temporal: day, week, month week
branch Branch a analizar branch actual
output Ruta de la gráfica PNG — (sin gráfica)
output-csv Ruta del CSV de datos
begin Fecha de inicio (YYYY-MM-DD) hace un año
end Fecha de fin (YYYY-MM-DD) hoy
no-comments 'true' para omitir análisis de comentarios 'false'
python-version Versión de Python a usar 3.12

CI / GitHub Pages

El repositorio incluye un workflow de GitHub Actions (.github/workflows/doc-meter.yml) que se ejecuta automáticamente en cada push a main:

  1. Clona el repositorio con historial completo (fetch-depth: 0).
  2. Instala las dependencias.
  3. Ejecuta doc_meter.py sobre el propio repo con agrupación mensual y genera docs_growth.png + docs_growth.csv.
  4. Construye una página index.html que embebe la gráfica y muestra los datos en tabla.
  5. Publica todo en GitHub Pages usando el entorno oficial github-pages.

El resultado queda disponible en:

https://PunteriaCero.github.io/doc-meter/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

doc_meter-0.1.0.tar.gz (9.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

doc_meter-0.1.0-py3-none-any.whl (9.9 kB view details)

Uploaded Python 3

File details

Details for the file doc_meter-0.1.0.tar.gz.

File metadata

  • Download URL: doc_meter-0.1.0.tar.gz
  • Upload date:
  • Size: 9.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for doc_meter-0.1.0.tar.gz
Algorithm Hash digest
SHA256 82166117c37e908c84964be617bf247d6274af4db964da2b1107b5386fbf11d2
MD5 c2da712b350f150fe8e7c64d60ea0150
BLAKE2b-256 0c6852347f8863fc69908b2e1c6786f54d3ccee71729fb71f28be3dfd0dc5e2f

See more details on using hashes here.

File details

Details for the file doc_meter-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: doc_meter-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for doc_meter-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4caabd629e8ee6f6d658220232bbc718ec732c4b25f2463cd9e31d1ad4712543
MD5 210be1c09f661b649bde146024395ac2
BLAKE2b-256 b3d9f830d9b31a8c919edbb25447362330629aa064c69da105c28abe1928d02c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page