SCIP Code Intelligence Protocol
SCIP (pronounciation: “skip”) is a language-agnostic protocol for indexing source code, which can be used to power code navigation functionality such as Go to definition, Find references, and Find implementations.
This repository includes:
- A protobuf schema for SCIP.
- Rich Go bindings for SCIP: This includes many utility functions to help build tooling on top of SCIP.
- Auto-generated bindings for TypeScript, Rust and Haskell.
- The
scip
CLI makes SCIP indexes a breeze to work with.
If you’re interested in better understanding the motivation behind SCIP, check out the announcement blog post.
If you’re interested in writing a new indexer that emits SCIP, check out our documentation on how to write an indexer.
SCIP CLI reference
Usage:
scip convert [--from=<path>] [--to=<path>]
scip stats [--from=<path>]
scip snapshot [--from=<path>] [--output=<path>]
scip --version
scip -h | --help
Options:
--from=<path> Input file for conversion [default: index.scip].
--to=<path> Output file for conversion [default: dump.lsif].
--output=<path> Output directory [default: scip-snapshot].
--version Show version.
-h --help Show help text.
A single dash path ('-') for --from (--to) is interpreted as stdin (stdout).
The 'convert' subcommand currently only supports conversion from SCIP to LSIF.
Contributing
We welcome questions, suggestions as well as code and docs contributions.
For submitting contributions, check out Development.md to better understand project structure and common workflows.
Contributors should abide by the Sourcegraph Code of Conduct.