Skip to content

Reporte de Auditoría y Control de Calidad #2

Description

@Daga21Gz

Reporte de Auditoría y Control de Calidad (QC)

Proyecto: NPN Explorer Colombia (Plugin para QGIS)
Autor: Albert Gaviria
Fecha: Junio 2026

Este documento registra los hallazgos de la auditoría de código interna y las correcciones aplicadas para asegurar el cumplimiento de las políticas de publicación de la tienda oficial de complementos de QGIS (QGIS Python Plugins Repository).


📋 Resumen de Acciones Aplicadas

Con el fin de garantizar la transparencia, seguridad y estabilidad requerida para la revisión oficial de QGIS, se han resuelto los siguientes aspectos del código:

1. 🚨 Seguridad y Privacidad (Remediación de Riesgos)

  • Sanitización de Consultas (SQLi/Filtro): En plugin.py, se añadió un proceso de escape (.replace("'", "''")) en las búsquedas manuales de NPN sobre capas vectoriales usando QgsFeatureRequest().setFilterExpression. Esto mitiga errores o comportamientos maliciosos con entradas que contengan comillas simples.
  • Privacidad de Logs: Se modificó la llamada de inicio de sesión de la Ventanilla Única de Registro (VUR) en plugin.py para omitir el parámetro username en el registro de logs locales. Las credenciales de usuarios no se guardan en texto plano en la máquina.

2. 🔧 Compatibilidad Futura (QGIS 3.30+ y QGIS 4.x)

  • Tipos de Capa Vectorial: Se reemplazó el uso de la clase deprecada QgsMapLayerType.VectorLayer en plugin.py por una importación adaptativa que utiliza el estándar Qgis.LayerType.Vector en versiones modernas de QGIS, manteniendo un fallback automático para versiones LTR previas.

3. 💾 Resiliencia del Sistema de Archivos

  • Ruta de Logs Dinámica: En logger.py, se removió la escritura estática en el directorio raíz del plugin (que fallaba en instalaciones de solo lectura de QGIS). El archivo npn_explorer.log se almacena dinámicamente en el directorio de configuración del perfil del usuario (QgsApplication.qgisSettingsDirPath()), que siempre garantiza permisos de escritura.

4. 🧹 Mantenibilidad de Código y Limpieza

  • Eliminación de Redundancias: Se centralizó el diccionario de códigos registrales ORIPS en la cabecera de vur_client.py y se removieron 5 declaraciones de importaciones inline duplicadas.
  • Corrección de Variables: Se previnieron NameErrors potenciales en parser.py inicializando las variables de control al inicio de la función de parsing.
  • Documentación: Se corrigieron los separadores de directorios para entornos Linux en el README.md y se documentaron los archivos colombia_en_mapas_client.py y logger.py en la estructura del proyecto.

⚙️ Integración Continua (CI/CD)

Se ha implementado un flujo de trabajo de GitHub Actions en .github/workflows/qgis-plugin-ci.yml para garantizar que cada cambio pase por:

  1. Linter Estático (flake8): Validación automática de sintaxis y errores fatales de código Python.
  2. Construcción Automática: Validación del script build_zip.py.
  3. Despliegue de Releases: Generación automática de empaquetados ZIP oficiales al empujar tags de versión (v*).

Este reporte certifica que el complemento se encuentra estabilizado, optimizado y libre de vulnerabilidades de seguridad comunes para su uso en entornos corporativos y públicos de QGIS.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions