Skip to content

Repository files navigation

Gemcheck

Tu asistente de línea de comandos para cuidar la salud de tu código.

Node.js TypeScript React pnpm

NPM Version Changesets


¿Qué es Gemcheck?

Gemcheck es una herramienta amigable que te ayuda a evaluar y mejorar la calidad de tus proyectos hechos en Node.js. En lugar de tener que revisar el código a mano, Gemcheck automatiza el proceso para que puedas detectar problemas a tiempo, como archivos que cambian demasiado, cuellos de botella en el equipo y dependencias ocultas. Todo esto funciona desde tu terminal, por lo que es muy fácil de usar y de integrar en tus rutinas de trabajo diarias.

El proyecto está organizado en un "monorepo" y sigue los principios de la Arquitectura Limpia, lo que significa que el código está muy bien separado y es fácil de mantener.

Estructura del Proyecto

  • @nikelyh/gemcheck-domain: El núcleo de la herramienta. Aquí guardamos las reglas y configuraciones principales sin depender de nada externo.
  • @nikelyh/gemcheck-application: La lógica que hace que todo funcione. Conecta las reglas del dominio con las herramientas externas.
  • @nikelyh/gemcheck-infrastructure: La capa que se comunica con el mundo exterior (como bases de datos SQLite, lectura de archivos e historial de Git).
  • @nikelyh/gemcheck: La interfaz de la terminal. Es lo que interactúa contigo cuando escribes gemcheck en la consola.
  • @nikelyh/gemcheck-dashboard: Un panel de control visual hecho en React para que puedas ver los reportes de manera gráfica y ajustar la configuración.

Funcionalidades Actuales

Actualmente, Gemcheck ya puede hacer varias cosas geniales por tu proyecto:

  • Análisis Evolutivo de Git:
    • Hotspots (Puntos Calientes): Detecta qué archivos cambian con demasiada frecuencia y podrían tener problemas o bugs ocultos.
    • Bus Factor: Identifica si partes críticas del código dependen de una sola persona, lo cual es un riesgo para el equipo.
    • Acoplamiento Lógico: Descubre qué archivos suelen modificarse siempre juntos, lo que ayuda a ver dependencias que tal vez no sabías que existían.
  • Análisis Estático Avanzado (AST):
    • Complejidad Cognitiva y Ciclomática: Analiza la estructura del código (if, loops, etc.) e identifica áreas difíciles de mantener o probar.
    • Detección de Duplicidad: Encuentra patrones estructurales repetidos mediante el uso de árboles sintácticos (AST).
  • Triaje y Resolución Automática (Auto-fix):
    • Asignación automática de niveles de riesgo a cada archivo basándose en múltiples métricas.
    • Resolución y limpieza automática de código sucio usando jscodeshift.
  • Panel de Control Visual (Dashboard): Interfaz rediseñada en estilo Neo-Brutalista (vibrante y clara) para visualizar resultados de escaneos, configurar métricas y aplicar correcciones con un solo clic.
  • Configuración Dinámica: Puedes ajustar todos los valores y umbrales de los análisis a través de la interfaz web. Todo se guarda de forma persistente en una base de datos local para tus futuros análisis.

Roadmap

Para conocer las funcionalidades que tenemos planeadas (como Análisis Estático Avanzado y Pruebas Dinámicas), revisa nuestro documento de ROADMAP.md.

Uso

Gemcheck está diseñado para ser flexible. Puedes usarlo como una herramienta de línea de comandos en cualquier proyecto o integrarlo directamente en tu código.

Como herramienta de terminal (CLI)

La forma más fácil de usar Gemcheck en cualquier proyecto es ejecutándolo con npx sin necesidad de instalar nada globalmente:

# Navega al proyecto que quieres analizar
cd mi-proyecto

# Ejecuta el escaneo de git
npx @nikelyh/gemcheck git

# O abre el panel de control
npx @nikelyh/gemcheck config --ui

Si prefieres tenerlo disponible en tu sistema en todo momento, puedes instalarlo globalmente:

npm install -g @nikelyh/gemcheck

# Ahora puedes usarlo en cualquier lugar:
gemcheck git
gemcheck config --ui

Como paquete dentro de tu proyecto

Si quieres utilizar las herramientas de Gemcheck dentro de tu propio código (por ejemplo, para crear scripts personalizados), puedes instalar los módulos que necesites:

npm install @nikelyh/gemcheck-domain @nikelyh/gemcheck-application
import { GitAnalyzerService } from '@nikelyh/gemcheck-application';
// ... usar el servicio en tu código

Primeros Pasos para Contribuir

Si quieres descargar el código fuente y modificar Gemcheck, sigue estos pasos:

Requisitos Previos

  • Node.js (v18 o superior)
  • pnpm (v8 o superior)

Instalación local para desarrollo

  1. Clona el repositorio e instala las dependencias:
    pnpm install
  2. Construye todos los paquetes internos:
    pnpm build
  3. Ejecuta la herramienta para ver la ayuda y los comandos disponibles:
    pnpm start

Desarrollo y Contribución

Si quieres ayudar a mejorar Gemcheck, ten en cuenta nuestras reglas de arquitectura:

  1. El paquete domain no debe tener dependencias externas.
  2. El paquete application solo depende de domain.
  3. El paquete infrastructure implementa lo que domain necesita usando herramientas de terceros.

Para ejecutar las pruebas en todos los paquetes:

pnpm test

Desarrollado para hacer que la calidad del código sea accesible y amigable.

Releases

Packages

Contributors

Languages