nvim/lsp/snyk_ls.lua
Simon Lasbrugnas a2e5555c64
fix(lsp)!: actually use the root lsp/ folder and remove
lua/custom/lsp/** configs

This commit removes the need for nvim-lspconfig which is replaced by the
vim.lsp API.

The lsp/ folder is a copy of nvim-lspconfig's lsp/ folder as it makes it
easy to modify LSP configurations on the fly.

Conform: biome has been replaced with oxfmt
2026-02-02 16:16:06 +01:00

99 lines
2.9 KiB
Lua

---@brief
---
--- https://github.com/snyk/snyk-ls
---
--- **[Snyk](https://snyk.io)** is a developer security platform that helps you find and fix
--- vulnerabilities in your code, open source dependencies, containers, and infrastructure as code.
---
--- The Snyk Language Server provides real-time security scanning for:
--- - **Snyk Open Source**: Find and fix vulnerabilities in open source dependencies
--- - **Snyk Code**: Find and fix security vulnerabilities in your code
--- - **Snyk Infrastructure as Code**: Find and fix security issues in Kubernetes, Terraform, and other IaC files
---
--- ## Authentication
---
--- **Note**: Currently, only token-based authentication is supported in Neovim.
---
--- 1. Get your API token from https://app.snyk.io/account
--- 2. Set the `SNYK_TOKEN` environment variable:
--- ```sh
--- export SNYK_TOKEN="your-token-here"
--- ```
---
--- ## Trusted Folders
---
--- Snyk requires you to trust directories before scanning them. To avoid being prompted every time:
---
--- ```lua
--- vim.lsp.config('snyk_ls', {
--- init_options = {
--- trustedFolders = {
--- '/Users/yourname/projects', -- Trust your projects directory
--- '/path/to/another/trusted/dir',
--- },
--- },
--- })
--- ```
---
--- **Important**: Trust the top-level directory where you store your repositories, not individual repos.
--- For example, if you work on `/Users/yourname/projects/my-app`, trust `/Users/yourname/projects`.
--- Only trust directories containing code you trust to scan.
---
--- ## Configuration
---
--- Full configuration options available at https://github.com/snyk/snyk-ls#configuration-1
---
--- ### Advanced Configuration
---
--- For **non-default multi-tenant or single-tenant setups**, you may need to specify:
---
--- - `endpoint`: Custom Snyk API endpoint (e.g., `https://api.eu.snyk.io` for EU, or your single-tenant URL)
--- ```
---@type vim.lsp.Config
return {
cmd = { 'snyk', 'language-server', '-l', 'info' },
root_markers = { '.git', '.snyk' },
filetypes = {
'apex',
'apexcode',
'c',
'cpp',
'cs',
'dart',
'dockerfile',
'elixir',
'eelixir',
'go',
'gomod',
'groovy',
'helm',
'java',
'javascript',
'json',
'kotlin',
'objc',
'objcpp',
'php',
'python',
'requirements',
'ruby',
'rust',
'scala',
'swift',
'terraform',
'terraform-vars',
'typescript',
'yaml',
},
settings = {},
init_options = {
activateSnykOpenSource = 'true', -- Scan open source dependencies
activateSnykCode = 'false', -- Scan your code for vulnerabilities
activateSnykIac = 'true', -- Scan infrastructure as code
integrationName = 'Neovim',
integrationVersion = tostring(vim.version()),
token = os.getenv('SNYK_TOKEN') or vim.NIL,
trustedFolders = {}, -- Add your trusted directories here to avoid being prompted every time
},
}