What is LSIF?

The Language Server Index Format (LSIF, pronounced “else if”) is a standard format for language servers or other programming tools to emit their knowledge about a code workspace. This persisted information can later be used to answer LSP requests for the same workspace without running a language server.

LSIF specification blog post

LSIF is a standard format for persisted code analyzer output. It allows a code viewing client (e.g., an editor or code browser) to provide features like autocomplete, go to definition, find references, and similar, without requiring a language analyzer to perform those computations in real-time. Today, several companies are working to support its growth, including Sourcegraph and GitHub/Microsoft, and the protocol is beginning to be used to power a rapidly growing list of language intelligence tools. See below for details on and links to current indexer implementations.


When is LSIF useful?

For many repositories, the only two build environments that understand the code well enough to provide code intelligence are your editor and CI. Most code browsers don’t have access to either of those environments, so they use heuristics to provide code intelligence.

With LSIF, a build step in CI can dump information about the code to a file which can be transported anywhere. For example, code browsers only need that LSIF dump in order to provide hover tooltips, jump-to-definition, and find-references. This has many benefits:


Current implementations

LSIF is growing - fast. See tables below for the latest on adoption.


Qualifications:

To be included on this list, LSIF indexers must be fully open source.


Key

Implemented
WIP
Not implemented

LSIF Indexers



Contact us

LSIF.dev is maintained by Sourcegraph.

To suggest additions or to update the status of a project, please file issues or submit PRs on this project at github.com/lsif/lsif.github.io



Icons from Glyphicons Free, licensed under CC BY 3.0.