Seguridad de Snyk con Language Server Protocol
Bastian Doetsch
6 de septiembre de 2022
0 minutos de lecturaSnyk ofrece plugins o extensiones para Visual Studio Code, los IDE de JetBrains como IntelliJ, WebStorm, PHPStorm y GoLand, y Visual Studio. Pero ¿alguna vez quisiste integrar Snyk en tu trabajo diario cuando tu editor o IDE favorito es Vim, Emacs, Sublime o Eclipse? Pronto será posible, ya que publicamos nuestro plugin para Eclipse, que incluye el nuevo Snyk Language Server Protocol.
Una gran variedad de editores e IDE
Actualmente, Snyk ofrece plugins para Visual Studio Code, Visual Studio, Eclipse y la plataforma IntelliJ. Estas integraciones son completas, pero sus funcionalidades varían porque cada una se desarrolla y mantiene por separado.
Los cuatro IDE que ya admitimos cubren a la mayoría de los desarrolladores que usan Snyk, pero algunos quieren tener más opciones de IDE o editor y desarrollar en un entorno diferente, sin dejar de disfrutar de integraciones completas con todos los productos de Snyk durante sus tareas de ingeniería. Hasta ahora, no podíamos ofrecer una solución integrada y teníamos que recomendar la CLI, pero eso está cambiando con Language Server.
Presentamos Language Server Protocol
Language Server Protocol (LSP) fue creado por Microsoft y se publicó como código abierto en 2016. VSCode lo usa ampliamente y define estándares de comunicación con un IDE para resaltar y anotar código, ofrecer correcciones y ayuda para programar, e informar sobre problemas. Esto ha permitido disfrutar de una experiencia de programación completa en casi cualquier entorno, ya que hay servidores de lenguaje con muchas funciones para prácticamente todos los lenguajes de programación.
En Snyk, analizamos cómo aprovechar este protocolo para ofrecer análisis de Snyk en distintos IDE y concluimos que LSP podía cubrir nuestra necesidad de mostrar problemas y vulnerabilidades. En lugar de desarrollar integraciones específicas para cada IDE, podemos aprovechar la compatibilidad con LSP que ya existe en una gran variedad de entornos de desarrollo. Muchos incluyen esta funcionalidad de forma predeterminada: Eclipse, VSCode, Visual Studio, Sublime, Vim, Atom y muchos otros editores admiten este protocolo. Incluso el nuevo producto JetBrains Fleet admite LSP.
Además, LSP se amplía cuando se necesitan nuevas capacidades y cada vez más IDE lo admiten.
Snyk Language Server

Cuando comenzamos a trabajar en la integración de los productos de Snyk con Language Server Protocol, decidimos empezar con Eclipse como primer IDE para usarlo con su protocolo de backend de Snyk. Esto se debió a que el plugin de Snyk para Eclipse no tenía tantas funciones como el de otras plataformas y ya había un plugin de Language Server disponible para Eclipse. La integración LSP LSP4e ya funciona con Eclipse; solo tuvimos que ampliarla y configurarla para nuestros propósitos.
Nuestro Snyk Language Server está implementado en Go, lo que nos permite crear binarios independientes para diversas plataformas. Acabamos de ponerlo a disposición general para nuestro plugin de Eclipse y estamos trabajando para incorporarlo a los otros plugins de IDE que admitimos, a fin de implementar mejoras más rápido en todos los entornos de desarrollo.
El nuevo plugin de Eclipse 2.0

Probamos Language Server internamente sin integraciones personalizadas para NeoVim, Sublime y otros editores, pero el plugin de Snyk para Eclipse es la primera integración que Snyk admite oficialmente y que ofrece esta funcionalidad.
El nuevo plugin de Eclipse no solo cubre Snyk Open Source, sino también Snyk IaC (infraestructura como código) y los hallazgos de Snyk Code, además de ofrecer opciones de configuración ampliadas. Antes, solo admitía Snyk Open Source.
Autenticación y descarga
Ahora, la autenticación y la descarga de los binarios necesarios se inician a pedido, y se muestra el progreso del análisis y las notificaciones para el usuario. Si no quieres que los binarios se administren automáticamente, puedes desactivar esta opción y seleccionar rutas personalizadas para mantener el control total.

Además, la integración ahora es mucho más completa. El plugin de Snyk para Eclipse resalta los problemas en el editor de código, marca los archivos que presentan problemas en las vistas Project Explorer y Package Explorer, y también los elementos en la vista Outline. Además, los problemas de Snyk aparecen en la vista Problems de Eclipse, donde puedes filtrarlos.
Los análisis se inician automáticamente cuando se abre el plugin y al abrir o guardar documentos. También puedes iniciarlos manualmente desde el menú contextual del proyecto.
Anotaciones y resaltado
Si Snyk detecta un problema, se resalta la línea correspondiente en el editor: se subraya y se marca en el margen izquierdo, junto a los números de línea.

Vista Problems
La vista Problems de Eclipse muestra una lista de todos los problemas.

Project Explorer
Los archivos que presentan problemas también se resaltan en las vistas Project Explorer y Package Explorer:

Información al pasar el cursor
Al pasar el cursor sobre un problema —en este caso, uno detectado por Snyk Code—, se muestra información adicional para entenderlo y corregirlo.

Code Lenses
Code Lenses permite interactuar con el código desde el editor y enviar comandos al servidor de lenguaje. Se muestran sobre las líneas de código que tienen una lente asociada. En nuestro caso, mostramos el flujo de datos de Snyk Code mediante Code Lenses para que puedas navegar con un solo clic por las distintas ubicaciones del flujo de datos.

Acciones de código
Para Snyk Open Source y Snyk IaC, el plugin permite abrir en el navegador descripciones detalladas de los problemas resaltados:

A partir de ahora, Eclipse admitirá automáticamente todos los productos de Snyk que ofrece Snyk Language Server.
Snyk a tu alcance, para que trabajes como quieras
Con LSP, la compatibilidad con Snyk se integra en muchos IDE y editores nuevos. Con Eclipse, incorporamos otra herramienta importante, pero prácticamente todos los entornos de desarrollo más usados admiten LSP. Prueba Snyk gratis hoy mismo en tu entorno favorito: haz clic aquí e instala el plugin que más te convenga. Mantente protegido.
Empieza con Capture the Flag
Aprende a resolver desafíos de Capture the Flag viendo nuestro taller virtual introductorio a pedido.
