multilspy

Monitor-Guided Decoding of Code LMs with Static Analysis of Repository Context

multilspy is a cross-platform library designed to simplify the process of creating language server clients to query and obtain results of various static analyses from a wide variety of language servers that communicate over the Language Server Protocol. It is easily extensible to support any language that has a Language Server and currently supports Java, Rust, C# and Python. We aim to continuously add support for more language servers and languages.

Language servers are tools that perform a variety of static analyses on code repositories and provide useful information such as type-directed code completion suggestions, symbol definition locations, symbol references, etc., over the Language Server Protocol (LSP). Since LSP is language-agnostic, multilspy can provide the results for static analyses of code in different languages over a common interface.

multilspy intends to ease the process of using language servers, by handling various steps in using a language server:

  • Automatically handling the download of platform-specific server binaries, and setup/teardown of language servers
  • Handling JSON-RPC based communication between the client and the server
  • Maintaining and passing hand-tuned server and language specific configuration parameters
  • Providing a simple API to the user, while executing all steps of server-specific protocol steps to execute the query/request.

Some of the analyses results that multilspy can provide are:


Contributors

Lakshya A Agrawal, Aditya Kanade, Navin Goyal, Shuvendu Lahiri, Sriram Rajamani