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.
@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 escribesgemchecken 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.
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).
- Complejidad Cognitiva y Ciclomática: Analiza la estructura del código (
- 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.
Para conocer las funcionalidades que tenemos planeadas (como Análisis Estático Avanzado y Pruebas Dinámicas), revisa nuestro documento de ROADMAP.md.
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.
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 --uiSi 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 --uiSi 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-applicationimport { GitAnalyzerService } from '@nikelyh/gemcheck-application';
// ... usar el servicio en tu códigoSi quieres descargar el código fuente y modificar Gemcheck, sigue estos pasos:
- Node.js (v18 o superior)
- pnpm (v8 o superior)
- Clona el repositorio e instala las dependencias:
pnpm install
- Construye todos los paquetes internos:
pnpm build
- Ejecuta la herramienta para ver la ayuda y los comandos disponibles:
pnpm start
Si quieres ayudar a mejorar Gemcheck, ten en cuenta nuestras reglas de arquitectura:
- El paquete
domainno debe tener dependencias externas. - El paquete
applicationsolo depende dedomain. - El paquete
infrastructureimplementa lo quedomainnecesita usando herramientas de terceros.
Para ejecutar las pruebas en todos los paquetes:
pnpm test