bbannier/zeek-language-server
GitHub: bbannier/zeek-language-server
为Zeek脚本提供LSP语言服务器支持,在主流编辑器中实现代码补全、跳转定义、语义高亮等智能开发辅助功能。
Stars: 17 | Forks: 4
# Zeek script 语言服务器
本项目为 [Zeek](https://zeek.org/) script 实现了一个 [language server](https://microsoft.github.io/language-server-protocol/)。
这是 Alpha 质量的软件,特别是在类型解析方面。虽然它目前已经提供了有用的结果,但并未解析所有 Zeek script;不过,我们要么正确解析符号,要么完全不解析,即,如果呈现了结果,它应该是正确的。
## 安装
许多不同平台的二进制文件托管在 [GitHub](https://github.com/bbannier/zeek-language-server/releases/latest) 上,可以通过以下方式安装
```
curl -L https://github.com/bbannier/zeek-language-server/releases/latest/download/zeek-language-server-installer.sh | sh
```
这也会安装一个二进制文件,可用于更新安装。
```
$ zeek-language-server-update
Checking for updates...
Already up to date; not upgrading
```
或者,可以使用 Python 包管理器安装二进制文件,例如 [`pipx`](https://pipx.pypa.io/)
```
$ pipx install git+https://github.com/bbannier/zeek-language-server@t/wip
installed package zeek-language-server 0.73.4, installed using Python 3.13.8
These apps are now globally available
- zeek-language-server
done! ✨ 🌟 ✨
```
### 从源码构建
本项目需要 Rust 才能构建,可以通过例如 [rustup](https://rustup.rs) 进行设置。
然后可以通过以下方式安装本项目
```
cargo install --git https://github.com/bbannier/zeek-language-server.git
```
这将安装一个名为 `zeek-language-server` 的二进制文件,提供完整的服务器功能。
## 设置
为了查看 Zeek 系统脚本中的符号,需要安装 Zeek,并且 `zeek-config` 应该在 `PATH` 中。
为了获得可选的格式化支持,[`zeek-format`](https://github.com/zeek/zeekscript/) 应该在 `PATH` 中。
### 配置
服务器解释以下 `initializationOptions`:
- `inlay_hints_parameters` (默认值: `true`):
是否显示函数调用参数的 inlay hints
- `inlay_hints_variables` (默认值: `true`):
是否显示变量声明的 inlay hints
- `references` (默认值: `false`):
是否启用 _Go To References_。
- `rename` (默认值: `false`):
是否启用 _Rename_。
- `semantic_highlighting` (默认值: `true`)
启用语义高亮。
- `debug_ast_nodes` (默认值: `false`)
在悬停时启用 AST 节点的调试输出
**警告**:由于 Zeek 脚本通常具有不完整的 `@load` 语句,因此提供的列表很可能是不完整的。请使用 `grep` 等工具来搜索标识符的所有引用。
#### 编辑器设置
##### vscode
我们提供了一个 [minimal extension for
vscode](https://github.com/bbannier/zeek-language-server/tree/main/vscode),它被 [published to the vscode
marketplace](https://marketplace.visualstudio.com/items?itemName=bbannier.zeek-language-server)。
此外,每个 [release](https://github.com/bbannier/zeek-language-server/releases) 都会创建一个扩展 VSIX 文件。
启动时,扩展会自动下载该版本的 server 二进制文件。
#### Emacs
有关 Emacs 的安装说明,请参阅 [此处](README.emacs.md)。
#### JetBrains IDEs
有关 JetBrains IDEs 的安装说明,请参阅 [此处](README.intellij.md)。
#### 其他编辑器
我们为 x86_64 Darwin 或 Linux 系统提供了 [binaries for
releases](https://github.com/bbannier/zeek-language-server/releases)。然后,您应该设置客户端以使用此二进制文件。
可以在例如 [此处](https://langserver.org/#implementations-client) 找到编辑器插件列表。
## 调试
有关 VS Code 设置和功能列表(其中一些是 VS Code 特有的),请参阅 [这些说明](./DEBUGGING.md)。
## 开发
此服务器通过 [tree-sitter highlighting
queries](https://tree-sitter.github.io/tree-sitter/syntax-highlighting) 提供高亮支持。要调整现有内容或添加新查询,需要编辑 [`crates/tree-sitter-zeek/vendor`](https://github.com/bbannier/zeek-language-server/tree/main/crates/tree-sitter-zeek/vendor) 中的文件,并对子模块进行升级。
标签:Golang, IDE支持, LSP, Rootkit, Rust, SOC Prime, Zeek, Zeek-Script, 云安全监控, 代码格式化, 代码补全, 可视化界面, 安全编程, 开发工具, 网络安全, 网络流量审计, 脚本语言, 语法高亮, 语言服务器, 逆向工具, 通知系统, 隐私保护, 静态分析