参与贡献与从源码构建

本页面面向贡献者。VS Code 用户通常应安装 Marketplace 扩展,其中已包含宿主和 sidecar。

先决条件

  • 通过 rustup 安装的 Rust stable
  • .NET 10 SDK(代码库固定使用 10.0.203,并允许兼容的前向滚动)
  • Node.js 20 或更高版本
  • Git

部分性能分析器测试还需要全局工具 dotnet-tracedotnet-countersdotnet-dump

开发容器

随附的开发容器提供项目使用的 Rust、.NET、Node 和测试工具。在 VS Code 中打开代码库,然后选择 Dev Containers: Reopen in Container

代码库布局

SharpLsp/
├── Cargo.toml                    # 根 Rust 工作区清单
├── src/
│   ├── sharplsp/                 # Rust 宿主、构建脚本和 Rust 端到端测试
│   ├── sidecars/                 # C#、F# 和共享的 .NET sidecar/测试
│   ├── editors/
│   │   ├── vscode/               # VS Code 扩展
│   │   ├── zed/                  # Zed 集成源码
│   │   └── rider/                # Rider 集成源码
│   ├── examples/                 # 示例解决方案和配置
│   ├── fixtures/                 # 测试和真实场景固定样例
│   └── website/                  # Eleventy 文档网站
├── docs/                         # 技术规范和计划
└── tools/                        # 构建、打包、覆盖率和共享 make 辅助工具

构建与测试

请从代码库根目录运行命令。

# Rust 宿主
cargo build
cargo clippy --all-targets --all-features
cargo test

# .NET sidecar
dotnet test src/sidecars/SharpLsp.Sidecars.sln

# VS Code 扩展
npm --prefix src/editors/vscode ci
npm --prefix src/editors/vscode run lint
npm --prefix src/editors/vscode run package

# 网站
npm --prefix src/website ci
npm --prefix src/website run build
npm --prefix src/website test

扩展的端到端测试套件会部署真实的 SharpLsp 二进制文件,并启动 VS Code 测试宿主。它比 TypeScript 检查更为繁重;请以代码库中的 Make 目标和 CI 工作流作为完整测试矩阵的准确信息来源。

架构

SharpLsp 有三个运行时层级:

  • Rust LSP 宿主;
  • Roslyn C# sidecar;
  • FCS F# sidecar。

IPC 在 Windows 上通过命名管道传输 MessagePack,在 Linux/macOS 上通过 Unix 域套接字传输。更改跨层级行为之前,请阅读架构

文档来源

面向公众的网站文档位于 src/website/src/docs,对应的日语和简体中文版本分别位于 src/website/src/ja/docssrc/website/src/zh/docs

技术行为规范位于 docs/specs;实现计划位于 docs/plans。每当用户可见的行为发生变化时,请同时更新公开文档和两种翻译。