RPGLE Analyzer (v0.3.4 Preview)
Extension preview de VS Code para analizar fuentes RPGLE fixed/free/mixtas, mantener un Outline estructural limpio y exponer vistas separadas para semantica y grafos.
Estado actual
Outline jerarquico para procedimientos, prototipos, parametros, definiciones locales, subrutinas, archivos y otros simbolos soportados.
Semantic Insights para referencias Read/Write por variable y scope.
Graph Explorer como mapa conceptual guiado del archivo activo: flujo de llamadas, operaciones de archivo y LikeDS -> DS alrededor de una raiz seleccionable.
Impact Explorer para arbol de invocaciones forward con callers basicos sobre el archivo activo.
Smart Preview, CodeLens, Folding y Go To Parent IF para navegacion estructural.
Alcance soportado
- Procedimientos (
P ... B/E, dcl-proc / end-proc)
- Subrutinas (
BEGSR / ENDSR)
- Parametros PI
- Prototipos (
PR, DCL-PR)
- Variables y DS (
D, DCL-S, DCL-DS)
- Constantes (
DCL-C y fixed conservador)
- Indicadores inequívocos (
*IN.., *INLR, *INRT)
KLIST / KFLD
- Archivos (
F, DCL-F)
EXEC SQL DECLARE <cursor> CURSOR
Instalacion rapida
Opcion 1: instalar desde VSIX
- Genera o descarga
rpgle-analyzer-0.3.4.vsix.
- En VS Code abre la paleta de comandos.
- Ejecuta Extensions: Install from VSIX.
- Selecciona el archivo y reinicia si hace falta.
Consulta INSTALL.md para una guia mas detallada.
Opcion 2: generar el VSIX localmente
npm install
npm run verify
vsce package --pre-release
Opcion 3: desarrollo local
- Clona este repositorio.
- Ejecuta
npm install.
- Ejecuta
npm run verify.
- Presiona
F5 para abrir Extension Development Host.
Caracteristicas principales
- Outline tipo RDi: estructura primaria sin mezclar semantica ni grafos.
- Semantic Insights: una sola vista para analisis
Read/Write por variable, scope y referencias navegables.
- Graph Explorer: mapa conceptual guiado para comprender relaciones locales del archivo activo con raiz seleccionable, foco visual en invocaciones y rail secundario para archivos y
LikeDS.
- Impact Explorer: arbol expandible para comprender flujo de invocaciones y callers basicos.
- Referencias en Outline: mini busqueda de usos por simbolo cuando la opcion esta activada.
- Control Flow: deteccion de bloques IF/DO/SELECT/MONITOR/BEGSR con CodeLens y Folding.
- Smart Preview: mapa estructural interactivo para entender aperturas, ramas, cierres, llamadas e I/O en fuentes fixed-form y mixtas.
Uso recomendado
- Para estructura: usa el
Outline.
- Para analisis por variable: ejecuta
RPGLE: Open Semantic Insights.
- Compatibilidad:
RPGLE: Analyze Read/Write References y el alias con typo siguen redirigiendo a Semantic Insights.
- Para mapa conceptual local del archivo activo: ejecuta
RPGLE: Open Graph Explorer.
- Para flujo de invocaciones: ejecuta
RPGLE: Open Impact Explorer.
- Para vistas enfocadas: usa
RPGLE: Show Call Graph o RPGLE: Show Dependency Graph.
- Para bloques: usa
RPGLE: Show Smart Preview y RPGLE: Go To Parent IF.
Configuracion
{
"rpgleOutline.enableDSpecVariables": true,
"rpgleOutline.enableKListFields": true,
"rpgleOutline.showReferencesInOutline": true,
"rpgleOutline.maxReferencesPerSymbol": 20,
"rpgleOutline.outlineSortMode": "alphabetical",
"rpgleOutline.enableLiveBlockNavigator": true,
"rpgleOutline.showLiveBlockStatus": true
}
Roadmap
Completado en v0.3.2
- Parser modular estable para fixed/free/mixto.
- Outline estructural estable.
- Semantic Insights separado del Outline.
- Graph Explorer separado del Outline.
- Impact Explorer separado del Outline.
- Resolucion inicial de
CALLP con soporte de prototype.
- Relaciones
LikeDS -> DS.
- Nuevos kinds:
prototype, constant, indicator, sqlCursor.
Siguiente evolucion sugerida
- Semantica legacy avanzada para
MOVE, MOVEL, Z-ADD, ADD y equivalentes.
Go to Definition scope-aware.
- Control flow avanzado para
WHEN, ON-ERROR, ITERATE y LEAVE.
- Evaluacion de migracion a LSP.
Baseline y regresion
npm run fixture:check
npm run baseline:sources
npm run verify
Tambien puedes usar:
npm run normalize:sources
npm run sample:sources
npm run regression:sample
Publicacion preview
Documentos relacionados
| |