aboutsummaryrefslogtreecommitdiffstats
path: root/lua/lspconfig/codeqlls.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/lspconfig/codeqlls.lua')
-rw-r--r--lua/lspconfig/codeqlls.lua52
1 files changed, 52 insertions, 0 deletions
diff --git a/lua/lspconfig/codeqlls.lua b/lua/lspconfig/codeqlls.lua
new file mode 100644
index 00000000..ffe08df4
--- /dev/null
+++ b/lua/lspconfig/codeqlls.lua
@@ -0,0 +1,52 @@
+local configs = require 'lspconfig/configs'
+local util = require 'lspconfig/util'
+
+local server_name = "codeqlls"
+
+local root_pattern = util.root_pattern("qlpack.yml")
+
+configs[server_name] = {
+ default_config = {
+ cmd = {"codeql", "execute", "language-server", "--check-errors", "ON_CHANGE", "-q"};
+ filetypes = {'ql'};
+ root_dir = function(fname)
+ return root_pattern("qlpack.yml") or util.path.dirname(fname)
+ end;
+ log_level = vim.lsp.protocol.MessageType.Warning;
+ before_init = function(initialize_params, config)
+ initialize_params['workspaceFolders'] = {{
+ name = 'workspace',
+ uri = initialize_params['rootUri']
+ }}
+ end;
+ settings = {
+ search_path = vim.empty_dict()
+ };
+ };
+ docs = {
+ package_json = "https://raw.githubusercontent.com/github/vscode-codeql/main/extensions/ql-vscode/package.json";
+ description = [[
+Reference:
+https://help.semmle.com/codeql/codeql-cli.html
+
+Binaries:
+https://github.com/github/codeql-cli-binaries
+ ]];
+ default_config = {
+ settings = {
+ search_path = [[list containing all search paths, eg: '~/codeql-home/codeql-repo']];
+ };
+ };
+ };
+ on_new_config = function(config)
+ if type(config.settings.search_path) == 'table' and not vim.tbl_isempty(config.settings.search_path) then
+ local search_path = "--search-path="
+ for _, path in ipairs(config.settings.search_path) do
+ search_path = search_path..vim.fn.expand(path)..":"
+ end
+ config.cmd = {"codeql", "execute", "language-server", "--check-errors", "ON_CHANGE", "-q", search_path}
+ else
+ config.cmd = {"codeql", "execute", "language-server", "--check-errors", "ON_CHANGE", "-q"}
+ end
+ end;
+}