mirror of
https://git.proxmox.com/git/rustc
synced 2025-08-17 02:40:45 +00:00
74 lines
3.1 KiB
Markdown
74 lines
3.1 KiB
Markdown
# SCIP Code Intelligence Protocol
|
|
|
|
SCIP (pronunciation: "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](./scip.proto).
|
|
- Rich Go and Rust bindings for SCIP: These include many utility functions
|
|
to help build tooling on top of SCIP.
|
|
- Auto-generated bindings for TypeScript and Haskell.
|
|
- The [`scip` CLI](./docs/CLI.md), which 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](https://about.sourcegraph.com/blog/announcing-scip).
|
|
|
|
If you're interested in writing a new indexer that emits SCIP,
|
|
check out our documentation on
|
|
[how to write an indexer](https://docs.sourcegraph.com/code_intelligence/explanations/writing_an_indexer).
|
|
Also, check out the [Debugging section][] in the Development docs.
|
|
|
|
If you're interested in consuming SCIP data,
|
|
you can either use one of the [provided language bindings](https://github.com/sourcegraph/scip/tree/main/bindings),
|
|
or generate code for the [SCIP protobuf schema](./scip.proto)
|
|
using the protobuf toolchain for your language ecosystem.
|
|
Also, check out the [Debugging section][] in the Development docs.
|
|
|
|
[debugging section]: ./Development.md#debugging
|
|
|
|
## Tools using SCIP
|
|
|
|
Several indexers currently emit SCIP data:
|
|
|
|
- [scip-java](https://github.com/sourcegraph/scip-java): Java, Scala, Kotlin
|
|
- [scip-typescript](https://github.com/sourcegraph/scip-typescript): TypeScript, JavaScript
|
|
- [rust-analyzer](https://github.com/rust-lang/rust-analyzer): Rust
|
|
- [scip-clang](https://github.com/sourcegraph/scip-clang): C++, C
|
|
- [scip-ruby](https://github.com/sourcegraph/scip-ruby): Ruby
|
|
- [scip-python](https://github.com/sourcegraph/scip-python): Python
|
|
- [scip-dotnet](https://github.com/sourcegraph/scip-dotnet): C#, Visual Basic
|
|
- [scip-dart](https://github.com/Workiva/scip-dart): Dart
|
|
- [scip-php](https://github.com/davidrjenni/scip-php): PHP
|
|
|
|
For more details about indexers, including LSIF-based indexers,
|
|
see the [Sourcegraph documentation](https://docs.sourcegraph.com/code_navigation/references/indexers).
|
|
|
|
Other tools which use SCIP include the [Sourcegraph CLI](https://github.com/sourcegraph/src-cli),
|
|
and the SCIP CLI in this repo.
|
|
|
|
## Installing the `scip` CLI
|
|
|
|
You can find binaries for the `scip` CLI tool [here](https://github.com/sourcegraph/scip/releases).
|
|
You can also compile a binary locally using:
|
|
|
|
```sh
|
|
git clone https://github.com/sourcegraph/scip.git --depth=1
|
|
cd scip
|
|
go build ./cmd/scip
|
|
```
|
|
|
|
You can consult the [CLI reference](docs/CLI.md) or `--help` for usage information.
|
|
|
|
## Contributing
|
|
|
|
We welcome questions, suggestions as well as code and docs contributions.
|
|
|
|
For submitting contributions, check out [Development.md](./Development.md)
|
|
to better understand project structure and common workflows.
|
|
|
|
Contributors should abide by the [Sourcegraph Code of Conduct](https://handbook.sourcegraph.com/company-info-and-process/communication/code_of_conduct/).
|