tree -L 2 .
├── script.sh
├── yourCode
│ └── System
└── Dockerfile
# Usa la imagen base de PHP que necesites | |
FROM php:8.4-cli | |
# Instala git y unzip, necesarios para Composer | |
RUN apt-get update && apt-get install -y git unzip | |
# Instala Composer | |
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer | |
# Instala PHPCS y el estándar PHPCompatibility con versiones recientes | |
RUN composer global require "squizlabs/php_codesniffer=*" "wimg/php-compatibility=*" | |
# Crea un enlace simbólico para que el comando 'phpcs' sea accesible | |
RUN ln -s /root/.composer/vendor/bin/phpcs /usr/local/bin/phpcs | |
# Configura el estándar PHPCompatibility para que sea accesible | |
RUN phpcs --config-set installed_paths /root/.composer/vendor/wimg/php-compatibility | |
# Define un punto de entrada para el contenedor | |
ENTRYPOINT ["phpcs"] |
Define la versión de PHP contra la que quieres probar la compatibilidad | |
TEST_VERSION="5.3-8.4" | |
# Define la ruta de la imagen Docker de PHPCS | |
DOCKER_IMAGE="my_app" | |
# Define el directorio base de tu código dentro del contenedor | |
CODE_DIR="/app/yourCode/System" | |
# Define el archivo de salida para el informe | |
REPORT_FILE="compatibilidad_reporte.txt" | |
# Borra el archivo de reporte anterior si existe | |
> $REPORT_FILE | |
echo "Iniciando análisis de compatibilidad para la versión de PHP ${TEST_VERSION}..." | |
echo "Los resultados se guardarán en ${REPORT_FILE}" | |
echo "----------------------------------------------------" >> $REPORT_FILE | |
# Usa find para buscar todos los archivos .php en el directorio especificado | |
find .yourCode/System -name "*.php" | while read -r file; do | |
# Muestra el archivo que se está analizando | |
echo "Analizando ${file}..." | |
# Construye la ruta del archivo dentro del contenedor | |
# La ruta local "./codigo/..." se convierte en "/app/codigo/..." | |
container_file="/app/${file}" | |
# Ejecuta el comando Docker para analizar el archivo | |
# La salida de error y stdout se redirigen a un archivo | |
echo ">>> ${file} <<<" >> $REPORT_FILE | |
docker run --rm -v "$(pwd):/app" ${DOCKER_IMAGE} --standard=PHPCompatibility --runtime-set testVersion ${TEST_VERSION} ${container_file} >> $REPORT_FILE | |
# Agrega una línea en blanco para mejorar la legibilidad del informe | |
echo "" >> $REPORT_FILE | |
done | |
echo "Análisis completado. Revisa el archivo ${REPORT_FILE} para ver los resultados." |