Blog

Uso de enlaces de documentación con Sensei

November 9, 2020
Alan Richardson
Manos escribiendo en el teclado de un portátil con código verde en la pantalla y el texto: Domina la programación segura con Sensei.

Una de las dificultades al aprender una nueva librería o compartir prácticas acordadas en el equipo es documentar y crear ejemplos.

A menudo creamos pequeños proyectos de ejemplo, pero no los tenemos abiertos cuando trabajamos con el código real.

Muchas veces he pensado que sería genial poder enlazar a nuestros ejemplos, o a ejemplos en línea, y acceder a una URL para obtener más explicaciones cuando sea necesario.

En Java, tenemos los comentarios JavaDoc, que pueden incluir una anotación see:

/**
 * @see <a href="https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations">Documentación de anotaciones de Junit 5</a>
 */

Un JavaDoc como este en librerías de terceros es de gran ayuda, ya que podemos usar la funcionalidad de Documentación Rápida en IntelliJ para acceder a ejemplos más detallados.

Pero todos sabemos que los comentarios no se actualizan tan a menudo como el código, y el mantenimiento de la presencia web suele estar desconectado del mantenimiento de la librería, siendo a veces realizado por un equipo completamente distinto.

Cómo ayuda Sensei

Sensei ofrece la capacidad de buscar coincidencias en anotaciones y métodos de librerías para proporcionar enlaces a documentación extensa en una wiki o en sitios de tutoriales de terceros.

Como ejemplo, estoy usando la anotación @Test de JUnit.

El JavaDoc es muy detallado y la vista de Documentación Rápida explica cómo utilizar la anotación.

Sin embargo, la documentación oficial en el sitio web suele ser más fácil de leer y contiene más ejemplos.

Cuando un equipo empieza a aprender una librería, contar con una serie de tutoriales recomendados puede ser muy útil.

Sensei cuenta con una acción goto que podemos usar para abrir una URL, lo que nos permite enlazar a sitios externos y ejemplos de documentación que, como equipo, consideramos útiles.

Implementación de la URL de destino

Para implementar esto, crearía una búsqueda que coincida con la anotación @Test de Junit.

search:
   annotation:
    owner:
      method: {}
    type: "org.junit.jupiter.api.Test"


Y luego añadiría acciones goto para cada una de las URLs que considero útiles.

p. ej.

El siguiente ejemplo crearía una única acción Anotaciones de JUnit (aprender) que abriría ambas URL en un navegador al mismo tiempo.

availableFixes:
- name: "Aprender sobre anotaciones de JUnit"
  actions:
  - goto:
      type: "URL"
      value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations"=
  - goto:
      type: "URL"
      value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods"

Y cuando la activo en IntelliJ con Alt+Enter veo el menú contextual que puedo seleccionar para saltar a la documentación.


Code editor context menu showing options related to Parameterized Annotations in Java code.

Acciones múltiples

Podría optar por tener varias acciones para que cada URL o tutorial tenga su propia opción en el menú emergente de corrección rápida alt+enter.

Por ejemplo, para la anotación @Parameterized, podría querer enlazar a la documentación oficial y a un conjunto de ejemplos de código en línea.

Simplemente crearía una receta que busque la anotación:

search:
  annotation:
    owner:
      method: {}
    type: "org.junit.jupiter.params.ParameterizedTest"


Y enlaza a los sitios que identifiqué como útiles:

availableFixes:
- name: "Anotaciones de JUnit (aprender)"
  actions:
  - goto:
      type: "URL"
      value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-annotations"
- name: "¿Qué es una prueba de JUnit? (aprender)"
  actions:
  - goto:
      type: "URL"
      value: "https://junit.org/junit5/docs/current/user-guide/#writing-tests-classes-and-methods"


Ambos enlaces aparecerían entonces en el cuadro de diálogo emergente.

¿Quién se beneficiaría?

Me habría resultado útil al usar y aprender bibliotecas, especialmente al liderar equipos y ayudarles a adoptar una nueva biblioteca.

Esto también podría beneficiar a los equipos que crean bibliotecas, al crear un conjunto estándar de recetas de documentación para ayudar a guiar a las personas a través de la adopción de la biblioteca o de nuevas funciones en la misma.

Esto sería especialmente útil si el mantenimiento del código y el de la documentación son realizados por equipos diferentes.

Puedes instalar Sensei desde IntelliJ usando `preferences > plugins` (solo busca "sensei secure code").

Todo el código de esta entrada de blog está en Github en el módulo junitexamples en https://github.com/SecureCodeWarrior/sensei-blog-examples


Eslogan

Controle el desarrollo impulsado por IA antes de su lanzamiento

Mida el riesgo asistido por IA, aplique políticas de codificación segura en el momento de la confirmación y acelere la entrega segura en todo su ciclo de vida de desarrollo de software (SDLC).

Reservar una demostración
Biblioteca de recursos

Explorar más blogs

Acceda a contenido especializado sobre programación segura, gobernanza de IA y gestión de riesgos de software.

ver todo
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Una cultura de seguridad: cómo Sage creó su programa de defensores

Descubre cómo Sage reforzó su seguridad con un enfoque flexible y centrado en las relaciones, logrando formar a más de 200 expertos en seguridad y alcanzar una reducción de riesgos cuantificable.

Más información
Icono de ventana de navegador con las letras KVK en negrita y dos líneas horizontales azules debajo sobre un fondo azul degradado.
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Kamer van Koophandel: Seguridad a escala impulsada por los desarrolladores

La Cámara de Comercio (Kamer van Koophandel) comparte cómo integró la programación segura en el desarrollo diario mediante certificaciones basadas en roles, evaluaciones comparativas de puntuación de confianza y una cultura de responsabilidad compartida en seguridad.

Más información
Logotipo de Insurance Australia Group con texto y un icono en azul y gris dentro del diseño de una ventana de navegador web.
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Cómo un «Juego de Códigos» guía a IAG Group hacia un futuro de programación más seguro

IAG Group es la entidad detrás de muchas de las principales compañías de seguros en la región de Asia-Pacífico, que suscribe pólizas para millones de clientes por un valor aproximado de 11.400 millones de dólares australianos en primas anuales.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Mes de la Concienciación sobre Ciberseguridad 2026: Comprender la seguridad de la IA es fundamental para la defensa empresarial

Hemos llegado a un punto en el que la mayoría de las principales empresas de IA han pedido públicamente una ralentización global en el desarrollo de la IA para que las medidas de seguridad puedan ponerse al día, pero la verdad es que ya se han materializado graves problemas de seguridad. Esto deja a innumerables líderes de seguridad y equipos ejecutivos en una situación urgente, a medida que los costes monetarios y de riesgo de la implementación de la IA siguen acumulándose.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Habilitador 8: Branding de su programa

Un programa de codificación segura necesita algo más que un buen contenido para tener éxito. El Habilitador 8 muestra cómo el branding transforma la participación en una experiencia codiciada basada en el estatus.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Cada empleado está ahora en la primera línea de la ciberseguridad de la IA

El panorama tecnológico empresarial está cambiando a una velocidad que pocos previeron hasta que fue demasiado tarde. Hemos cruzado oficialmente el umbral del código escrito por humanos y la asistencia básica de copilotos hacia la era del Ciclo de Vida de Desarrollo Agéntico (ADLC). Si bien los agentes de IA autónomos prometen una eficiencia sin precedentes en múltiples funciones, también traen consigo una clase completamente nueva de riesgos regulatorios y de seguridad.

Más información

Proteja el desarrollo basado en IA antes de su lanzamiento

Identifique riesgos de desarrollo, aplique políticas y prevenga vulnerabilidades en todo el ciclo de vida de su software.

Reservar una demostración
No se encontraron elementos.