PHPStan Docker Runner
Una extensión para Cursor/VS Code que permite ejecutar PHPStan en un contenedor Docker existente. La salida de PHPStan se muestra en un OutputChannel personalizado y los problemas detectados aparecen en la sección de Problemas del editor, siendo totalmente clicables.
Características
- 🐳 Ejecuta PHPStan en un contenedor Docker existente
- 📁 Análisis de archivos individuales, directorios o todo el proyecto
- ⚙️ Configuración personalizable del contenedor y mapping de carpetas
- 🔍 Integración con el editor para mostrar problemas clicables
- 🚀 Comandos rápidos desde el menú contextual
- 🔄 Auto-ejecución al guardar archivos PHP (opcional)
- 📤 Salida de PHPStan en un OutputChannel personalizado
Salida y visualización
La salida de PHPStan se muestra en un OutputChannel propio dentro de VS Code, permitiendo revisar el resultado completo del análisis. Además, los problemas detectados por PHPStan se listan en la sección de "Problemas" del editor y puedes hacer clic en ellos para ir directamente al archivo y línea correspondiente.
Optimización de búsqueda
Cuando ejecutas el análisis sobre un directorio, la extensión optimiza la búsqueda de archivos para mostrar los problemas solo en ese ámbito, mejorando el rendimiento y la precisión.
Instalación
- Clona este repositorio en tu directorio de extensiones de Cursor/VS Code
- Instala las dependencias:
npm install
- Compila la extensión:
npm run compile
- Presiona
F5 para abrir una nueva ventana de Cursor/VS Code con la extensión cargada
Configuración
La extensión se puede configurar a través de la configuración de Cursor/VS Code:
phpstan-docker-runner.containerName: Nombre del contenedor Docker donde está PHPStan (por defecto: "phpstan")
phpstan-docker-runner.workDirectory: Directorio de trabajo dentro del contenedor (por defecto: "/var/www/html")
phpstan-docker-runner.configFile: Archivo de configuración de PHPStan (por defecto: "phpstan.neon")
phpstan-docker-runner.level: Nivel de análisis de PHPStan 0-9 (por defecto: "5")
phpstan-docker-runner.autoRun: Ejecutar PHPStan automáticamente al guardar archivos PHP (por defecto: false)
phpstan-docker-runner.phpstanPath: Ruta del ejecutable de PHPStan dentro del contenedor (por defecto: "vendor/bin/phpstan")
Uso
Comandos disponibles
- Ejecutar PHPStan en todo el proyecto - Analiza todo el proyecto
- Ejecutar PHPStan en archivo actual - Analiza solo el archivo PHP abierto
- Ejecutar PHPStan en directorio actual - Analiza el directorio seleccionado (menú contextual)
Acceso a los comandos
- Paleta de comandos:
Ctrl+Shift+P y busca "PHPStan"
- Menú contextual: Click derecho en archivos/directorios PHP
- Atajos de teclado: Puedes configurar atajos personalizados
Configuración de Docker
La extensión funciona con cualquier contenedor Docker que tenga PHPStan instalado. No necesitas un docker-compose.yml específico, solo asegúrate de que:
- El contenedor esté corriendo y tenga PHPStan instalado
- El mapping de carpetas esté configurado correctamente
- El directorio de trabajo dentro del contenedor esté configurado
Ejemplo de configuración
Si tu proyecto está mapeado así:
- Host:
/home/usuario/mi-proyecto → Contenedor: /var/www/html
- Nombre del contenedor:
mi-app-php
Configura la extensión así:
{
"phpstan-docker-runner.containerName": "mi-app-php",
"phpstan-docker-runner.workDirectory": "/var/www/html",
"phpstan-docker-runner.phpstanPath": "vendor/bin/phpstan"
}
Configuración de PHPStan
Incluye un archivo phpstan.neon de ejemplo:
parameters:
level: 5
paths:
- src
- app
- lib
excludePaths:
- vendor
- node_modules
- tests
- var
- cache
ignoreErrors:
- '#Call to an undefined method.*#'
checkMissingIterableValueType: false
checkGenericClassInNonGenericObjectType: false
reportUnmatchedIgnoredErrors: false
Requisitos
- Docker y Docker Compose instalados
- Cursor o VS Code
- Node.js y npm (para desarrollo)
Desarrollo
- Clona el repositorio
- Instala dependencias:
npm install
- Compila:
npm run compile
- Abre en Cursor/VS Code y presiona
F5
Estructura del proyecto
phpstan-docker-runner/
├── src/
│ └── extension.ts # Código principal de la extensión
├── package.json # Manifest de la extensión
├── tsconfig.json # Configuración de TypeScript
├── phpstan.neon # Configuración de PHPStan (opcional)
├── install.sh # Script de instalación
└── README.md # Este archivo
Cómo funciona
- Configuración: La extensión lee la configuración del contenedor y directorio de trabajo
- Mapeo de rutas: Convierte las rutas locales a rutas del contenedor
- Ejecución: Ejecuta
docker exec [contenedor] [ruta-phpstan] analyse [ruta]
- Procesamiento: Convierte las rutas de salida del contenedor a rutas locales
- Visualización: Muestra los problemas como diagnósticos en el editor
Contribuir
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature)
- Commit tus cambios (
git commit -m 'Add some AmazingFeature')
- Push a la rama (
git push origin feature/AmazingFeature)
- Abre un Pull Request
Licencia
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE para más detalles.