⚠️ This project has been merged into github.com/sourcegraph/sourcegraph ⚠️
Assumes a working Go installation:
# lsif-validate
go get github.com/sourcegraph/lsif-test/cmd/lsif-validate
# lsif-visualize
go get github.com/sourcegraph/lsif-test/cmd/lsif-visualize
Resulting binary should then be in your $GOPATH/bin
(conventionally $HOME/go/bin
), so make sure thats in your $PATH
or else invoke using absolute/relative location.
Binary releases coming soon™️
This command validates the output of an LSIF indexer. The following properties are validated:
-
Element IDs are unique
-
All references of element occur after its definition
-
A single metadata vertex exists and is the firsts element in the dump
-
The project root is a valid URL
-
Each document URI is a URL relative to the project root
-
Each range vertex has sane bounds (non-negative line/character values and the ending position occurs strictly after the starting position)
-
1-to-n edges have a non-empty
inVs
array -
Edges refer to identifiers attached to the correct element type, as follows:
label inV(s) outV condition contains
range
if outV is a document
item
range
item
referenceResult
if outV is a referenceResult
next
resultSet
range
/resultSet
textDocument/definition
definitionResult
range
/resultSet
textDocument/references
referenceResult
range
/resultSet
textDocument/hover
hoverResult
range
/resultSet
moniker
moniker
range
/resultSet
nextMoniker
moniker
moniker
packageInformation
packageInformation
moniker
-
Each vertex is reachable from a range or document vertex (ignored: metadata, project, document, and event vertices)
-
Each range belongs to a unique document
-
No two ranges belonging to the same document improperly overlap
-
The inVs of each
item
edge belong to that document referred to by the edge'sdocument
field