| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
parent directory.. | ||||
Assumes a working Go installation:
# lsif-index-tester go install github.com/sourcegraph/sourcegraph/lib/codeintel/tools/lsif-index-tester # lsif-semantic-diff go install github.com/sourcegraph/sourcegraph/lib/codeintel/tools/lsif-semantic-diff # lsif-validate go install github.com/sourcegraph/sourcegraph/lib/codeintel/tools/lsif-validate # lsif-visualize go install github.com/sourcegraph/sourcegraph/lib/codeintel/tools/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 tests the relationships of an LSIF index against a set of known golden relationships.
You should have a folder full of separate projects. Each project should have an lsif_tests/ folder inside of it.
For example:
$ ls lsif-clang/functionaltests project_1 project_2
Inside of each project, they should have:
setup_indexer.sh
lsif_tests/
{
"textDocument/definition": [
{
"name": "other_simple",
"request": {
"textDocument": "src/uses_header.c",
"position": {
"line": 6,
"character": 8
}
},
"response": {
"textDocument": "src/uses_header.c",
"range": {
"start": { "line": 10, "character": 5 },
"end": { "line": 10, "character": 22 }
}
}
}
]
}go run . --indexer "lsif-clang compile_commands.json" --dir "/path/to/test_directory/"
Documentation coming soon.
Documentation 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's document field
Each range and result set has at most one result set attached to it
Documentation coming soon.
| Back | FazBrowse Home | New Git URL |