Snyk 언어 서버의 구성 예시
Sublime Text를 위한 예제 구성
// 이 곳에 있는 설정은 "LSP/LSP.sublime-settings"의 설정을 덮어쓰게 됩니다.
{
// 상태 표시줄에 Language Server 상태를 계속 표시합니다.
"show_view_status": true,
// Language Server 구성
"clients": {
"snyk": {
// 이 구성을 활성화합니다
"enabled": true,
"command": [
"/usr/local/bin/snyk-ls", // 다운로드한 이진 파일의 경로
"-l", // 로그 레벨 정의
"info", // info 레벨
"-f", // 파일 로깅
"/path/to/log/dir/snyk-ls-sublime.log" // 로그 파일
],
// 이 Language Server가 연결되는 버퍼 유형을 선택하는 선택기입니다.
"selector": "source", // 모든 파일 유형
"initializationOptions": {
"activateSnykCode":"true", // Snyk Code를 활성화합니다
"token": "xxx" // 매번 인증할 필요 없이 Snyk 토큰을 설정합니다
}
},
},
}
지원되는 파일을 열면 Sublime Text에서 Language Server가 시작되고 결과가 강조 표시됩니다.


Neovim을 위한 예제 구성
설정 방법은 다음과 같습니다:
mkdir -p ~/.config/nvim
touch init.lua
다음은 init.lua
스크립트의 예시입니다:
local on_windows = vim.loop.os_uname().version:match 'Windows'
local function join_paths(...)
local path_sep = on_windows and '\\' or '/'
local result = table.concat({ ... }, path_sep)
return result
end
vim.cmd [[set runtimepath=$VIMRUNTIME]]
local temp_dir = vim.loop.os_getenv 'TEMP' or '/tmp'
vim.cmd('set packpath=' .. join_paths(temp_dir, 'nvim', 'site'))
local package_root = join_paths(temp_dir, 'nvim', 'site', 'pack')
local install_path = join_paths(package_root, 'packer', 'start', 'packer.nvim')
local compile_path = join_paths(install_path, 'plugin', 'packer_compiled.lua')
local function load_plugins()
require('packer').startup {
{
'wbthomason/packer.nvim',
'neovim/nvim-lspconfig',
},
config = {
package_root = package_root,
compile_path = compile_path,
},
}
end
_G.load_config = function()
vim.lsp.set_log_level 'trace'
if vim.fn.has 'nvim-0.5.1' == 1 then
require('vim.lsp.log').set_format_func(vim.inspect)
end
local nvim_lsp = require 'lspconfig'
local on_attach = function(_, bufnr)
local function buf_set_option(...)
vim.api.nvim_buf_set_option(bufnr, ...)
end
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
-- Mappings.
local opts = { buffer = bufnr, noremap = true, silent = true }
vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts)
vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts)
vim.keymap.set('n', '<space>wl', function()
print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
end, opts)
vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts)
vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts)
vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
end
local lspconfig = require('lspconfig')
local configs = require 'lspconfig.configs'
if not configs.snyk then
configs.snyk = {
default_config = {
cmd = {'/usr/local/bin/snyk-ls','-f','/path/to/log/snyk-ls-vim.log'},
root_dir = function(name)
return lspconfig.util.find_git_ancestor(name) or vim.loop.os_homedir()
end,
init_options = {
activateSnykCode = "true",
}
};
}
end
lspconfig.snyk.setup {
on_attach = on_attach
}
print [[로그는 $HOME/.cache/nvim/lsp.log에서 찾을 수 있습니다. 이를 문제 템플릿에 설명된 대로 상세한 태그로 붙여넣으세요.]]
end
if vim.fn.isdirectory(install_path) == 0 then
vim.fn.system { 'git', 'clone', 'https://github.com/wbthomason/packer.nvim', install_path }
load_plugins()
require('packer').sync()
vim.cmd [[autocmd User PackerComplete ++once lua load_config()]]
else
load_plugins()
require('packer').sync()
_G.load_config()
end

Last updated