aviatesk/JETLS.jl

GitHub: aviatesk/JETLS.jl

基于 JET.jl 和 Julia 编译器基础设施构建的 Julia 语言服务器,提供类型敏感的深度静态分析和现代 IDE 功能。

Stars: 265 | Forks: 15

# JETLS [![](https://img.shields.io/badge/docs-user_guide-9558B2?logo=julia)](https://aviatesk.github.io/JETLS.jl/) [![](https://img.shields.io/badge/docs-dev_notes-7C3AED?logo=obsidian)](https://publish.obsidian.md/jetls) [![](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/f9e5c3e1cf155416.svg)](https://github.com/aviatesk/JETLS.jl/actions/workflows/JETLS.jl.yml) [![](https://codecov.io/gh/aviatesk/JETLS.jl/branch/master/graph/badge.svg?flag=JETLS.jl)](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扩展, 云安全监控, 代码分析, 代码补全, 代码诊断, 凭证管理, 威胁情报, 宏展开, 定义跳转, 开发者工具, 开源项目, 类型推断, 编程工具, 编译器技术, 语法分析, 语言服务器, 远程代码执行, 静态分析