PHPStan Docker Runner
Una extensión para Cursor/VS Code que permite ejecutar PHPStan en un contenedor Docker existente.
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
- 🚀 Comandos rápidos desde el menú contextual
- 🔄 Auto-ejecución al guardar archivos PHP (opcional)
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 Docker - 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.