Revisión de código en la practica

cómo revisamos código en proyectos abiertos

Yanina Bellini Saibene

2026-03-26

¿Qué es rOpenSci?

  • Comunidad que fomenta una cultura de software abierto y reproducible
  • Desarrolla herramientas en R para el acceso a datos y métodos abiertos
  • Mantiene infraestructura técnica compartida
  • Promueve la capacitación y el intercambio de conocimiento
  • Más de 300 paquetes revisados por pares

🔗 ropensci.org

¿Qué es la revisión de software por pares?

Un proceso abierto, transparente y amigable donde se revisan paquetes de R por personas expertas de la comunidad, de manera similar a la revisión de artículos científicos.

El proceso

  1. 📝 Autor/a envía el paquete
  2. 👀 Editor/a evalúa el alcance
  3. 🤖 Chequeos automáticos (pkgcheck)
  4. 🔍 Se asignan 2 revisores/as
  5. 💬 Revisión abierta en GitHub
  6. ✅ Paquete aceptado (o se solicitan cambios)

¿Qué se revisa?

  • Licencia abierta
  • Documentación completa
  • Pruebas (tests)
  • Experiencia de uso
  • Buenas prácticas
  • Interoperabilidad

Las 4 funciones principales de la revisión de código

🎓 Mentoría · 📏 Consistencia · ✅ Corrección · 🤝 Confianza

🎓 Mentoría

La revisión de código es una oportunidad de aprendizaje bidireccional:

Es una de las formas más efectivas de transferencia de conocimiento en equipos de desarrollo.

Para quien desarrolla

  • Recibe retroalimentación constructiva
  • Aprende mejores prácticas
  • Mejora habilidades de programación
  • Descubre nuevos patrones y herramientas
  • Aplica estándares de calidad

Para quien revisa

  • Aprende de otros estilos de código
  • Profundiza conocimiento técnico
  • Desarrolla habilidades de comunicación
  • Contribuye a la comunidad

📏 Consistencia

La revisión asegura que los paquetes cumplan estándares comunes.

  • 📖 Documentación: README, viñetas, páginas de ayuda, guias de contribución
  • 🧪 Pruebas: cobertura adecuada con testthat o similar
  • 📁 Estructura: organización estándar de paquetes R
  • 🔄 Integración continua: CI/CD configurado (GitHub Actions)
  • 📝 DESCRIPTION: campos completos (URL, License)
  • 🏷️ Nomenclatura: nombres de paquete y funciones claros y sin conflictos

Esto facilita que otras personas puedan usar, contribuir y mantener el software.

✅ Corrección

La revisión busca errores, problemas lógicos y oportunidades de mejora.

Se busca verificar

  • ¿El código hace lo que dice?
  • ¿Los resultados son correctos?
  • ¿Se manejan los errores adecuadamente?
  • ¿Hay problemas de rendimiento?

Herramientas que ayudan

  • R CMD check ✔️
  • goodpractice ✔️
  • pkgstats 📊
  • covr (cobertura de tests) ✔️
  • lintr (estilo de código) ✔️

{pkgcheck} integra todas estas herramientas en un solo reporte.

🤝 Confianza

El proceso de revisión genera confianza en múltiples niveles.

  • Usuarios/as: saben que el paquete fue revisado por personas expertas
  • Autores/as: tienen la certeza de que su software cumple altos estándares
  • Comunidad: puede confiar en la calidad del ecosistema rOpenSci
  • Ciencia: reproducibilidad y sustentabilidad

Sello de calidad

Los paquetes revisados por rOpenSci se publican bajo la organización ropensci y tienen una etiqueta de revisión lo que actúa como un sello de calidad.

📦 El paquete {pkgcheck}

Verifica si un paquete está listo para ser enviado al sistema de revisión por pares de rOpenSci.

¿Qué hace?

  • Ejecuta R CMD check
  • Integra goodpractice
  • Calcula estadísticas con pkgstats
  • Verifica la estructura del paquete
  • Genera un reporte de “Listo / No listo”

¿Para quién es?

  • 👩‍💻 Autores/as de paquetes
  • 🔍 Revisores/as de paquetes
  • 👨‍💼 Editores/as del proceso
  • 🧑‍🤝‍🧑 Cualquier persona que revise código R

🔗 docs.ropensci.org/pkgcheck

pkgcheck(): la función principal

library(pkgcheck)

# Ejecutar todas las verificaciones
salida <- pkgcheck::pkgcheck()

summary(): ¿Está listo para enviar?

summary(salida)
── inventarioRRNN 0.0.0.9000 ──────────────────────────────────────────────────────────────

✔ Package name is available
✖ does not have a 'codemeta.json' file.
✖ does not have a 'contributing' file.
✔ uses 'roxygen2'.
✔ 'DESCRIPTION' has a URL field.
✔ 'DESCRIPTION' has a BugReports field.
✔ Package has at least one HTML vignette
✖ These functions do not have examples: [mapear_censos, mapear_especie].
✖ Package has no continuous integration checks.
✖ Package coverage failed
✖ R CMD check found 1 error.
✖ R CMD check found 1 warning.
ℹ Some goodpractice linters failed.

ℹ Current status:
✖ Keep trying, you'll get there ...

ℹ 'pkgcheck' version: 0.1.2.240

✔️ = Pasa la verificación | ✖️ = Necesita corrección

list_pkgchecks(): ¿Qué se verifica?

list_pkgchecks()
## ℹ The following checks are currently implemented in pkgcheck:
## 1. pkgchk_has_bugs
## 2. pkgchk_has_citation
## 3. pkgchk_has_contributing
## 4. pkgchk_has_scrap
## 5. pkgchk_has_url
## 6. pkgchk_has_vignettes
## 7. pkgchk_ci
## 8. pkgchk_coverage
## 9. pkgchk_fns_have_examples
## 10. pkgchk_fns_have_return_vals
## 11. pkgchk_pkg_name_available
## 12. pkgchk_uses_roxygen2
## ...

Cada verificación (pkgchk_*) evalúa un aspecto específico de la calidad.

Ejemplos

Forma de comunicación

  • Comunicación amable y constructiva
  • Ofrecer:
    • Seguridad
    • Sugerencia/Decisión
    • Seguimiento

Usando {pkgcheck} fuera de rOpenSci

Ideas para tu equipo u organización

  • 🏢 En tu organización: estándar de calidad para paquetes internos
  • 🎓 En la universidad: enseñar buenas prácticas a estudiantes
  • 👥 En tu comunidad: revisar paquetes de colegas
  • 🔄 En CI/CD: verificaciones automáticas en cada commit
  • 📝 Pre-CRAN: preparar tu paquete antes de enviarlo a CRAN

Cómo incorporar la revisión en tu flujo

Crear tu propia lista de verificación

# Puedes usar pkgcheck como base y agregar tus propias verificaciones
x <- pkgcheck("mi-paquete")

# Verificar aspectos específicos
summary(x)  # Resumen ejecutivo

# Exportar y personalizar el reporte
md <- checks_to_markdown(x)

# Agregar tus propias observaciones al Markdown

observaciones <- "

## Observaciones adicionales

- ...
"

writeLines(paste0(md, observaciones), "revision.md")

Aspectos a evaluar manualmente

Aspecto Pregunta clave
🎓 Mentoría ¿El código usa (y enseña) buenas prácticas?
📏 Consistencia ¿Sigue los estándares del equipo?
✅ Corrección ¿Los resultados son verificables?
🤝 Confianza ¿Usarias/recomendarias este paquete?

Recursos

🛠️ Herramientas relacionadas

Paquete Función
goodpractice Buenas prácticas de desarrollo
pkgstats Estadísticas de paquetes
srr Estándares para software estadístico

Para Python existe pyOpenSci

¡Gracias! 🙏

¿Preguntas?


Yanina Bellini Saibene

🔗 ropensci.org


¡Participa!

¿Te interesa revisar paquetes? → Registrarse para revisar