-
Notifications
You must be signed in to change notification settings - Fork 222
Description
Describe the bug
CodeQL Language Server suppresses diagnostics when a QL pack is loaded
Context:
We are building a headless Python LSP client for CodeQL to automate query synthesis. We are using the CodeQL CLI version 2.20.1 (via codeql execute language-server).
Current Implementation:
- Server Start:
codeql execute language-server --check-errors=ON_CHANGE -v - Initialization: Standard
initializerequest withrootUripointing to a workspace. - Pack Setup: We create a valid
codeql-pack.ymlin the workspace withdependencies: { codeql/cpp-all: "^4.3.1" }and runcodeql pack install. - Pack Loading: We send
textDocument/didOpenfor thecodeql-pack.ymlfile to trigger pack resolution (this successfully fixes "unresolved module" errors). - Query Opening: We send
textDocument/didOpenfor a.qlquery file inside the pack.
library: false
name: temp-workspace
version: 0.0.0
dependencies:
codeql/cpp-all: ^4.3.1The Issue:
When we do not open the codeql-pack.yml file (Pack Mode inactive), the server reports diagnostics correctly (e.g., "could not resolve module cpp" or syntax errors). However, we no other solution like qlpack.yml was working to correctly point the language server to standard library location, even with --search-path or putting the search path explicitly in initializationOptions
However, as soon as we do open the codeql-pack.yml file (Pack Mode active), the server stops reporting ALL diagnostics for subsequently opened query files.
- Semantic errors (e.g.,
import non_existent_module) -> 0 diagnostics - Syntax errors (e.g.,
select 1 +) -> 0 diagnostics
Observations:
- The server does not send any
workspace/configurationrequests to the client. - The server does not send any
client/registerCapabilityrequests. - Providing a valid
databasepath ininitializationOptionsdoes not resolve the issue. - The
didOpenfor the pack file appears to successfully load the dependencies (because the "unresolved module" error disappears), but it seems to put the diagnostic engine into a silent state.
Question:
Is there a specific LSP notification, configuration option, or initialization parameter required to re-enable continuous diagnostic reporting (--check-errors=ON_CHANGE) after a QL pack has been loaded?
Technical Context:
CodeQL CLI Version: 2.20.1 (implied from dependencies)
Transport: Stdio with JSON-RPC 2.0
OS: Windows 11
Arguments: codeql execute language-server --check-errors=ON_CHANGE -v
Thanks for your time!
Rajat