From e99756d1d5acb6805003b403985ee0a2a253bf26 Mon Sep 17 00:00:00 2001 From: Thomas Schmucker Date: Wed, 25 Mar 2026 07:08:57 +0100 Subject: Neovim: Sonarqube Unterstützung hinzugefügt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- nvim/init.lua | 1 + nvim/lua/config/treesitter.lua | 1 + nvim/lua/config/usercmds.lua | 31 +++++++++++++++++++++++++++++++ nvim/lua/plugins/lsp.lua | 13 +++++++++++++ nvim/scripts/sonarqube.md | 28 ++++++++++++++++++++++++++++ nvim/scripts/sonarqube.sh | 13 +++++++++++++ 6 files changed, 87 insertions(+) create mode 100644 nvim/lua/config/usercmds.lua create mode 100644 nvim/scripts/sonarqube.md create mode 100755 nvim/scripts/sonarqube.sh (limited to 'nvim') diff --git a/nvim/init.lua b/nvim/init.lua index c9bdaf1..e56561e 100644 --- a/nvim/init.lua +++ b/nvim/init.lua @@ -4,5 +4,6 @@ local keymaps = require("config.keymaps") keymaps.global() require("config.autocmds") +require("config.usercmds") require("config.lazy") require("config.colorscheme") diff --git a/nvim/lua/config/treesitter.lua b/nvim/lua/config/treesitter.lua index 2bdfce5..f3024f0 100644 --- a/nvim/lua/config/treesitter.lua +++ b/nvim/lua/config/treesitter.lua @@ -12,6 +12,7 @@ M.languages = { "make", "markdown", "markdown_inline", + "po", "prisma", "python", "typescript", diff --git a/nvim/lua/config/usercmds.lua b/nvim/lua/config/usercmds.lua new file mode 100644 index 0000000..e7dd220 --- /dev/null +++ b/nvim/lua/config/usercmds.lua @@ -0,0 +1,31 @@ +local function run_sonar() + local exe = vim.fn.exepath("sonar-scanner") + + if exe == "" then + vim.notify("sonar-scanner nicht im PATH gefunden", vim.log.levels.ERROR) + return + end + + if vim.fn.executable(exe) == 0 then + vim.notify("sonar-scanner ist nicht ausführbar", vim.log.levels.ERROR) + return + end + + -- vim.cmd("!" .. exe) + vim.cmd("botright split | terminal " .. exe) + vim.cmd("norm G") +end + +local function load_sonar_issues() + local cmd = vim.fn.stdpath("config") .. "/scripts/sonarqube.sh" + + vim.fn.setqflist({}, " ", { + title = "SonarQube Issues", + lines = vim.fn.systemlist(cmd), + }) + + vim.cmd("copen") +end + +vim.api.nvim_create_user_command("SonarScan", run_sonar, {}) +vim.api.nvim_create_user_command("SonarIssues", load_sonar_issues, {}) diff --git a/nvim/lua/plugins/lsp.lua b/nvim/lua/plugins/lsp.lua index 3d53350..03a6be0 100644 --- a/nvim/lua/plugins/lsp.lua +++ b/nvim/lua/plugins/lsp.lua @@ -56,6 +56,10 @@ return { capabilities = capabilities, } + vim.lsp.config.jsonls = { + capabilities = capabilities, + } + vim.lsp.config.vtsls = { capabilities = capabilities, settings = { @@ -73,6 +77,14 @@ return { variableTypes = { enabled = false }, }, }, + javascript = { + suggest = { + completeFunctionCalls = true, + }, + inlayHints = { + parameterNames = { enabled = "all" }, + }, + }, }, } @@ -97,6 +109,7 @@ return { "basedpyright", -- npm install -g basedpyright, brew install basedpyright "bashls", -- npm install -g bash-language-server, pkg install hs-ShellCheck "clangd", -- pkg install llvm + "jsonls", -- npm install -g vscode-langservers-extracted "lua_ls", -- pkg install lua-language-server "prismals", -- npm install -g @prisma/language-server "vtsls", -- npm install -g @vtsls/language-server diff --git a/nvim/scripts/sonarqube.md b/nvim/scripts/sonarqube.md new file mode 100644 index 0000000..d276053 --- /dev/null +++ b/nvim/scripts/sonarqube.md @@ -0,0 +1,28 @@ +# Installieren + +```sh +brew install sonar-scanner +``` + +# Token erstellen + +1. Mit VPN verbinden. +2. Bei [Sonarqube] anmelden. +3. Auf "Account" -> "My Account" -> "Security" klicken +4. Einen neuen Token erstellen: + Name: "command-line" + Type: "User Token" + Expires in: "1 year" +5. Token und Host-URL in `/opt/homebrew/etc/sonar-scanner.properties` einfügen: +```conf +sonar.token= +sonar.host.url=https://sonarqube.dev.up2parts.com +``` + +# Sonarqube ausführen + +Im Projektverzeichnis `sonar-scaner` ausführen. +Sonarqube muss für das Projekt mit einer Datei `sonar-project.properties` konfiguriert sein. + +[Sonarqube]: https://sonarqube.dev.up2parts.com/ + diff --git a/nvim/scripts/sonarqube.sh b/nvim/scripts/sonarqube.sh new file mode 100755 index 0000000..ef1be89 --- /dev/null +++ b/nvim/scripts/sonarqube.sh @@ -0,0 +1,13 @@ +#!/bin/sh + +set -eu + +SONAR_TOKEN=$(awk -F= '/^sonar.token=/ {print $2}' /opt/homebrew/etc/sonar-scanner.properties) +SONAR_HOST_URL=$(awk -F= '/^sonar.host.url=/ {print $2}' /opt/homebrew/etc/sonar-scanner.properties) +PROJECT_KEY=$(awk -F= '/^sonar.projectKey=/ {print $2}' ./sonar-project.properties) + +curl -s \ + -u "$SONAR_TOKEN:" \ + "$SONAR_HOST_URL/api/issues/search?componentKeys=$PROJECT_KEY&statuses=OPEN" | + jq -r '.issues[] | "\(.component | sub("^[^:]+:"; "")):\(.line // 1): [\(.severity)] \(.message | gsub("\n"; " ")) (\(.author))"' + -- cgit v1.3