2.3.3 • Published 11 months ago

peg-java v2.3.3

Weekly downloads
-
License
MIT
Repository
gitlab
Last release
11 months ago

peg-java

Calcula Inestabilidad y Grado de abstracción para determinado proyecto en Java y reporta lo hallado.

Importante: A la hora de calcular la inestabilidad de un proyecto entero ES NECESARIO considerar tipos externos para el cálculo de acoplamiento a menos que sea entre módulos de un mismo proyecto que no es el foco de esta herramienta.

oclif Version License

Requerimientos

  • Node v18.15.x LTS

Utilización

$ npm install -g peg-java
$ peg-java COMMAND
running command...
$ peg-java (--version)
peg-java/2.3.3 linux-x64 node-v18.15.0
$ peg-java --help [COMMAND]
USAGE
  $ peg-java COMMAND
...

Ejecutar en desarrollo:
./bin/dev COMMAND

Ejecutar en producción:
./bin/run COMMAND

Mostrar debug (aplica a los anteriores):
DEBUG=peg-java:* peg-java COMMAND

Ejecutar pruebas:
npm run test

Comandos

peg-java DIRECTORY

Analiza el directorio entregado cómo argumento

USAGE
  $ peg-java DIRECTORY [--noDistance | [--noAbstraction | --noInstability] | ]

ARGUMENTS
  DIRECTORY  Ruta directorio de proyecto. (Absoluta o relativa)

FLAGS
  --noAbstraction  Omite el cálculo de abstracción
  --noDistance     Omite el cálculo de distancia
  --noInstability  Omite el cálculo de inestabilidad

DESCRIPTION
  Analiza el directorio entregado cómo argumento

  Recorre el directorio del proyecto Maven/Gradle y parsea los archivos .java, genera
  un gráfico abstracción/inestabilidad El directorio `test` y clases que contengan la
  palabra `Test` son omitidas.

EXAMPLES
  $ peg-java ../opencsv-source/
    Analizando proyecto en: ../opencsv-source/
    Archivos java: 150
    Total Acoplamiento: 106 Ca - 217 Ce
    Inestabilidad: 0.6718
    Abstracción: 0.2632
    Distancia: 0.065
    Gráfico generado en: distance-chart.png

See code: dist/commands/index.ts

peg-java help [COMMANDS]

Display help for peg-java.

USAGE
  $ peg-java help [COMMANDS] [-n]

ARGUMENTS
  COMMANDS  Command to show help for.

FLAGS
  -n, --nested-commands  Include all nested commands in the output.

DESCRIPTION
  Display help for peg-java.

See code: @oclif/plugin-help

Descripción y referencias

Este programa calcula la abstracción e inestabilidad con el fin de ayudar a comprender la arquitectura de un Software, se puede encontrar material de referencia a continuación:

Arquitectura

Changelog: Release 2

Estilo arquitectónico microkernel

Cómo parte del proceso actualizar la arquitectura del proyecto se decidió utilizar el estilo arquitectónico microkernel, el cual permite separar la lógica de negocio de la lógica de la aplicación, esto permite que la lógica de negocio sea independiente de la plataforma y pueda ser reutilizada en otras aplicaciones. El enfoque principal de esta entrega es la modularidad y la extensibilidad, por lo que se considera que este estilo arquitectónico es el más adecuado para el proyecto.

  • src/commands: Contiene los comandos de la aplicación, estos son los encargados de recibir los argumentos y opciones de la línea de comandos y delegar la ejecución a los servicios correspondientes. Es el equivalente a un cliente que accede a mecanismos en la arquitectura microkernel a través de capabilidades para comunicarse con un service o Plugin.
  • src/service: Servicios que contienen la lógica de negocio de la aplicación, estos son los encargados de realizar los cálculos y generar las métricas solicitadas. Es el equivalente a un Plugin en la arquitectura microkernel. Contiene servicios que extienden de Plugin cómo un tipo genérico de servicio.
  • src/core: Corresponde a el kernel o core de peg-java, a través de peg-java.ts actualiza la estadística del proyecto analizado, recibe las notificaciones generadas por los servicios, utiliza el Singleton ProjectStats y lo actualiza por medio de los eventos recibidos.

Patrones de diseño

  • Singleton: Se utiliza para mantener la estadística del proyecto analizado, esta estadística es actualizada por los servicios y es utilizada por el comando peg-java para mostrar los resultados. (src/model/project-stat.ts)
  • Observer: Se utiliza para notificar a los servicios cuando se ha analizado un archivo, esto permite que los servicios puedan actualizar la estadística del proyecto.
    • src/core/peg-java.ts: Observer (Suscriptor), es notificado por los servicios cuando se ha analizado un archivo u obtenido una métrica.
    • src/model/plugin.ts: Subject (Publicador), clase abstracta que funciona cómo base para crear Plugins, notifica al kernel cuando se ha analizado un archivo u obtenido una métrica y lo asigna en ProjectStat.

Diagrama

El siguiente diagrama representa las principales dependencias en el proyecto que permiten el funcionamiento descrito en la arquitectura.

arch_img

Contribuir

peg-java fué hecho por @jmainhard cómo parte de una evaluación académica. Para contribuir se considera:

  • UXD en Español (En medida de lo posible)
  • Código en Inglés
2.3.0

11 months ago

2.1.1

12 months ago

2.3.2

11 months ago

2.3.1

11 months ago

2.3.3

11 months ago

2.1.0

12 months ago

2.0.3

12 months ago

2.0.2

12 months ago

2.0.4

12 months ago

2.0.1

12 months ago

2.0.0

1 year ago

1.1.4

1 year ago

1.1.3

1 year ago

1.1.2

1 year ago

1.1.1

1 year ago