aviatesk/JETLS.jl
GitHub: aviatesk/JETLS.jl
基于 JET.jl 和 Julia 编译器基础设施构建的 Julia 语言服务器,提供类型敏感的深度静态分析和现代 IDE 功能。
Stars: 265 | Forks: 15
# JETLS
[](https://aviatesk.github.io/JETLS.jl/)
[](https://publish.obsidian.md/jetls)
[](https://github.com/aviatesk/JETLS.jl/actions/workflows/JETLS.jl.yml)
[](https://codecov.io/gh/aviatesk/JETLS.jl&flags[0]=JETLS.jl)
本项目的目标是为
[Julia](https://julialang.org/) 开发一个新的语言服务器,目前称为 "JETLS"。
JETLS 旨在通过提供高级静态分析以及与 Julia runtime 的无缝集成来提高开发者的生产力。
通过利用
[JET.jl](https://github.com/aviatesk/JET.jl)、
[JuliaSyntax.jl](https://github.com/JuliaLang/julia/tree/master/JuliaSyntax) 和
[JuliaLowering.jl](https://github.com/JuliaLang/julia/tree/master/JuliaLowering)
等工具技术,
JETLS 旨在提供增强的语言功能,例如类型敏感的诊断、宏感知的跳转定义等。
本仓库管理着 JETLS.jl(一个实现语言服务器的 Julia 包)以及 [`jetls-client`](https://marketplace.visualstudio.com/items?itemName=aviatesk.jetls-client)(一个作为语言客户端用于测试 JETLS 的示例 VSCode 扩展)。
## 文档
有关最终用户的文档,包括安装说明、配置选项和功能指南,请访问 **[用户指南文档](https://aviatesk.github.io/JETLS.jl/)**。
本 README 重点关注与开发相关的信息,例如项目路线图、实现状态和开发者资源。
## 路线图
对于想要测试此服务器的用户,这里是当前已实现的功能以及近期可能实现的功能的摘要。
请注意,不仅列表中的进度,而且列表本身的结构都可能发生变化。
- 分析
- [x] 文档同步
- [ ] (开发中) 增量分析
- [ ] JuliaLowering 集成
- [ ] 依赖项递归分析
- [ ] 跨服务器进程缓存系统
- [ ] 支持包扩展
- 诊断
- [x] 语法错误
- [x] Lowering 错误
- [x] 宏展开错误
- [x] 未使用的绑定(含代码操作)
- [x] 捕获的装箱变量
- [x] 未排序的导入语句(含代码操作)
- [x] 未使用的导入名称(含代码操作)
- [ ] 未定义的导入名称
- [ ] 未定义的导出名称
- [x] 方法覆盖
- [x] 抽象结构体字段
- [x] 未定义的绑定
- [x] 不存在的结构体字段
- [x] 按索引越界字段访问
- [x] `MethodError`
- [x] 配置支持
- [x] [CLI 接口](https://aviatesk.github.io/JETLS.jl/release/cli-check)
- 补全
- [x] 全局符号补全
- [x] 局部绑定补全
- [x] LaTeX/Emoji 补全
- [x] 方法签名补全
- [ ] (开发中) 基于参数类型的匹配方法过滤
- [x] 类似 [Juno](https://junolab.org/) 的方法补全返回类型注解
- [x] 关键字参数名称补全
- [ ] 属性补全
- 签名帮助
- [x] 基本实现
- [x] 宏支持
- [ ] (开发中) 基于参数类型的匹配方法过滤
- 定义
- [x] 方法定义
- [x] 全局绑定定义
- [x] 局部绑定定义
- [ ] 类型感知的方法定义
- 悬停
- [x] 方法文档
- [x] 全局绑定文档
- [x] 局部绑定位置
- [ ] 局部绑定的类型
- [ ] 类型感知的方法文档
- Inlay hint
- [ ] 方法参数名
- [ ] 绑定的类型
- 格式化
- [x] [Runic](https://github.com/fredrikekre/Runic.jl) 集成
- [x] [JuliaFormatter](https://github.com/domluna/JuliaFormatter.jl) 集成
- [x] 使格式化后端可配置
- 文档高亮
- [x] 局部绑定
- [x] 全局绑定
- [ ] 字段名 / 点访问绑定
- 查找引用 / 重命名
- [x] 局部绑定
- 全局引用
- [x] 最低限度支持
- [ ] 跨分析单元引用检测
- [ ] 别名引用支持
- [ ] 字段名
- [x] 文件重命名支持 (Julia 侧重命名)
- [ ] 文件重命名支持 (外部重命名)
- [x] 文档符号
- [x] 工作区符号
- TestRunner.jl 集成
- [x] 用于运行单个 `@testset` 的 Code lens
- [x] 用于运行单个 `@testset` 的代码操作
- [x] 用于运行单个 `@test` 用例的代码操作
- [x] 内联测试结果诊断
- 配置系统
- [x] 类型稳定的配置对象实现
- [x] 支持 LSP 配置
- [x] 文档
- [x] Schema 支持
- [x] 并行/并发消息处理
- [x] 工作进度支持
- [x] 消息取消支持
- [x] Notebook 支持
- 发布
- [x] 发布独立的 VSCode 语言客户端扩展
- [x] 使其可作为 Pkg 可执行应用程序安装
- [x] 环境隔离
- [ ] 为 `jetls-client` 自动安装/更新服务器
- [ ] 集成到 [julia-vscode](https://github.com/julia-vscode/julia-vscode) 中
## 开发说明
以下文档包含在开发 JETLS 时应参考的具体事项:
- [DEVELOPMENT.md](./DEVELOPMENT.md):开发者笔记
- [AGENTS.md](./AGENTS.md):具体编码规范(也推荐人类开发者阅读)
与 JETLS 开发相关的元层面讨论、研究和想法被整理为 [Obsidian](https://obsidian.md/) 笔记,地址为 。
## 许可证
MIT 许可证。详见 [LICENSE.md](./LICENSE.md)。
标签:DNS解析, IDE支持, JET.jl, Julia, JuliaLowering, JuliaSyntax, Language Server Protocol, LSP, VSCode扩展, 云安全监控, 代码分析, 代码补全, 代码诊断, 凭证管理, 威胁情报, 宏展开, 定义跳转, 开发者工具, 开源项目, 类型推断, 编程工具, 编译器技术, 语法分析, 语言服务器, 远程代码执行, 静态分析