后端认证鉴权云原生【免费下载链接】opaOpen Policy Agent (OPA) is an open source, general-purpose policy engine.项目地址https://gitcode.com/gh_mirrors/op/opa点击查看免费下载Regal 是 Rego 策略语言的 linter 与语言服务器Language Server它把regal lint的命令行体验带进了编辑器内部一边编写 Rego 策略一边实时获得诊断、补全、悬停文档、跳转定义、格式化与代码 lens 求值等能力。本文以 OPA 仓库中 docs/projects/regal/editor-support.md 为骨架逐一讲解 Visual Studio Code、Zed、Neovim、Helix、Kakoune 五类编辑器的接入配置并附上完整的 LSP 客户端与 DAP 调试器配置片段。读完本文你将能在自己惯用的编辑器中直接体验 Regal 的实时 linting、代码补全与单步调试。前置准备先安装 Regal 二进制所有编辑器的接入都依赖本机存在regal可执行文件。编辑器的语言服务器客户端需要调用regal language-server子命令来启动 LSP 服务DAP 调试则依赖 Regal 内置的 Debug Adapter 能力因此安装是第一优先事项。安装方式详见 docs/projects/regal/index.md 中的 Getting Started 章节常见途径包括macOSbrew install regal或通过mise use -g regallatest管理Linux/Unix 与 Windows从发布产物下载对应架构的二进制chmod 755 ./regal后放入PATH目录Dockerdocker run --rm ghcr.io/open-policy-agent/regal:latest version。安装完成后可用regal version验证。在 Neovim 中mason.vim用户还可以直接执行:MasonInstall regal一键安装 Regal 二进制。Visual Studio CodeVS Code 是 Regal 支持最完整、功能最丰富的编辑器环境。官方扩展 vscode-opa 已内置对 Regal 语言服务器的支持。启用 Regal 实时 linting安装vscode-opa扩展的0.13.3 及以上版本然后打开包含 Rego 文件的工作区即可。扩展会自动发现并使用本机的 Regal 二进制并将 lint 结果以诊断Diagnostics形式实时呈现在编辑器中。扩展也会自动查找并使用项目内的 Regal 配置文件.regal/config.yaml无需额外手工指定配置路径。Debug Adapter ProtocolDAP调试从v0.17.0起vscode-opa 扩展支持 Regal 的 Debug Adapter。Regal 的 DAP 能力使其可以作为长期运行的调试适配器与 VS Code 调试器通信对 Rego 策略提供实时的单步执行调试——详见 docs/projects/regal/debug-adapter.md 中对断点、变量检查与 print 输出等特性的说明。启动调试会话的方式将光标置于某个 Rego rule 或 package 声明上方通过 code actionDebug触发调试会话也可使用求值用的Evaluatecode lens 旁的调试入口。调试会话中的操作要点断点点击编辑器左侧装订线gutter即可在任意行添加/移除断点执行会停在断点处以供检查变量、观察某段 Rego 代码被执行了几次变量检查在断点处或单步执行时可查看作用域内的局部变量以及全局input、data文档的内容。input数据默认从工作区中的input.json加载如果存在print 输出策略中的print语句输出会实时显示在调试控制台Debug Console中。需要留意的是如果策略求值依赖data.json需要为 bundle 提供.manifest文件或在 Regal 配置中配置 project roots否则调试器可能无法正确加载外部数据。ZedZed 是一款主打性能与简洁的现代开源代码编辑器通过社区维护的zed-rego扩展由 Styra 社区开发支持 Rego。该扩展提供语法高亮、linting以及 Regal 语言服务器提供的绝大多数能力悬停、补全、跳转定义等是 Regal LSP 特性在 Zed 中的主要载体。安装zed-rego扩展后打开 Rego 文件即可获得基于 Regal 的诊断。需要说明的是目前 Zed 尚不支持 code lens 特性包括 Evaluate/调试类 code lensRegal 会在 Zed 支持后提供相应能力。NeovimNeovim 同时支持 Language Server ProtocolLSP与 Debug Adapter ProtocolDAP因此既能接入 Regal 的 linting/补全也能接入其调试器。Neovim 生态中有多种插件可以完成配置下文按 LSP 与 DAP 两类分别给出可复制的配置。LSPnvim-lspconfig推荐nvim-lspconfig 对 Regal 语言服务器有原生支持只需一行配置即可启用require(lspconfig).regal.setup()该配置会使用regal language-server启动语言服务器并自动注册 Regal 提供的诊断、补全、悬停、跳转定义、折叠、符号、inlay hints、格式化、code actions 与 selection ranges 等 LSP 能力完整特性清单见 docs/projects/regal/language-server.md。LSPnone-lsnone-ls 允许以 Lua 方式将诊断、code actions 等能力注入 Neovim。使用 VimPlug 的最小安装配置如下Plug nvim-lua/plenary.nvim Plug nvimtools/none-ls.nvim lua EOF local null_ls require(null-ls) null_ls.setup { sources { null_ls.builtins.diagnostics.regal } } EOF以一个内容如下的示例 Rego 文件test.rego为例package test default allowRbac : true配置生效后编辑器会实时显示来自 Regal 的诊断。例如allowRbac这一驼峰式命名会被prefer-snake-case规则标记界面上的诊断效果如下图所示补全nvim-cmpnvim-cmp 支持将语言服务器作为补全来源。要获得 Regal 的上下文感知补全内置函数、局部变量、导入包、工作区中的引用等推荐配合nvim-lspconfig来源使用即先按上文配置好nvim-lspconfig再在nvim-cmp的 sources 中加入{ name nvim_lsp }。其他插件若要看到 Rego 的实时 linting所使用的插件必须支持 LSP 规范中的textDocument/diagnostic消息推送。Neovim 生态中有大量语言服务器集成方案若希望官方收录你使用的方案可向 Regal 提交 issue 或通过社区 Slack 反馈。DAPnvim-dap 与 nvim-dap-regonvim-dap 是 Neovim 的 DAP 客户端实现提供控制调试器的基本函数nvim-dap-rego 则为 Regal 的 DAP 接口提供开箱即用的配置。设置 Regal 调试器只需require(dap-rego).setup()随后通过:lua require(dap).continue()即可启动调试会话。nvim-dap-rego 同时支持处理 Regal 的 Evaluate code lens 请求从而在 Neovim 中内联展示求值结果与 VS Code 扩展的行为一致。HelixHelix 编辑器的默认配置会对 Rego 文件尝试使用regols语言服务器。要改用 Regal在languages.toml中加入如下配置即可[[language]] name rego scope source.rego roots [.regal/config.yaml] file-types [rego] indent { tab-width 4, unit \t } comment-token # language-servers [ { name regal } ] [language-server.regal] command regal args [language-server] config { provideFormatter true }配置要点说明roots指定了该语言的项目根标记为.regal/config.yaml即存在 Regal 配置文件的目录会被识别为 Rego 项目根language-servers将rego语言与名为regal的语言服务器关联[language-server.regal]定义服务器启动命令为regal language-server并通过config.provideFormatter声明 Regal 可作为格式化器使用。关于语言配置的更多细节可参考 Helix 的语言配置文档。KakouneKakoune 通过 kakoune-lsp 插件获得 LSP 支持。使用如下配置即可让 Kakoune 对 Rego 文件启用 Regalhook global BufCreate .\.rego %{ set-option buffer filetype rego } hook global BufSetOption filetyperego %{ set-option buffer lsp_language_id rego set-option buffer lsp_servers %{ [regal] root_globs [.git, .hg, .regal] command regal args [language-server] # these three lines are optional, to configure initializationOptions settings_section regal [regal.settings.regal] formatter opa fmt --rego-v1 } }配置说明前两个hook负责在创建/切换 Rego 文件时设置filetype rego与 LSP 语言 IDroot_globs用于定位项目根.git、.hg、.regal任一存在即可command/args指定以regal language-server启动服务器末尾三行是可选配置用于设置initializationOptionssettings_section regal将客户端设置传给 Regalformatter opa fmt --rego-v1则把默认格式化器切换为opa fmt --rego-v1风格。编辑器接入背后的能力Regal 语言服务器与 DAP接入编辑器后能获得哪些能力取决于 Regal 语言服务器本身。Regal 的 LSP 实现不仅仅把regal lint的结果推进编辑器还提供了一整套开发配套能力详见 docs/projects/regal/language-server.md诊断语法错误与 lint 违规实时呈现悬停Hover鼠标悬停可查看 OPA 全部内置函数的文档与参数说明跳转定义点击规则/函数引用跳转到定义处折叠范围对跨行 AST 节点以及连续的 import/注释块提供折叠文档/工作区符号快速扫描并导航到规则与函数inlay hints在内置函数调用处显示参数名格式化默认使用opa fmt也可切换为opa fmt --rego-v1或regal fix通过客户端的formatter配置项指定代码补全基于上下文的补全建议内置函数、局部变量、导入包、工作区引用等code actions对opa-fmt、use-assignment-operator等规则提供 quick fix并提供Explore compiler stages源码动作code lens求值与调试在 package/rule 声明上方直接Evaluate求值或触发 DAP 调试会话选择范围、签名帮助、文档高亮、文档链接等辅助编辑能力。在调试方面Regal 作为 Debug Adapter 支持断点、变量检查含input/data全局文档与 print 输出查看具体演示见 docs/projects/regal/debug-adapter.md。小结Regal 的编辑器支持遵循一个二进制、多端接入的设计无论你使用 VS Code、Zed、Neovim、Helix 还是 Kakoune核心都是让编辑器以 LSP/DAP 客户端身份连接regal language-server从而获得一致的 linting、补全、格式化与调试体验。其中 VS Code官方扩展与 Neovimnvim-lspconfig nvim-dap-rego的支持最为完整尤其是求值结果的内联展示目前仅在这两类编辑器中可用其余编辑器会将求值结果写入output.json文件。配置完成后建议先用regal lint在命令行验证规则基线可结合--disable-category style控制初始噪音再回到编辑器中享受实时反馈同时在 CI 中配合opa check --strict与 Regal 的各类输出格式json、sarif、junit等见 docs/projects/regal/cli.md把同样的检查固化到流水线中形成编辑器内实时 CI 强制的完整闭环。赞分享后端认证鉴权云原生【免费下载链接】opaOpen Policy Agent (OPA) is an open source, general-purpose policy engine.项目地址https://gitcode.com/gh_mirrors/op/opa点击查看免费下载相关推荐Zed 编辑器 Elixir 语言支持指南语言服务器、格式化与调试实战Zed 编辑器 Elixir 语言支持指南语言服务器、格式化与调试实战 本文以 ZedAtom 与 Tree sitter 作者打造的高性能编辑器仓库中的开发工具代码编辑器桌面应用OmniRoute Auto-Combo 引擎解析基于自适应评分与自愈机制的自管理模型链OmniRoute Auto Combo 引擎解析基于自适应评分与自愈机制的自管理模型链 Auto Combo 是 OmniRoute 网关中的自管理模型链后端认证鉴权云原生Zed 编辑器 HTML 语言支持配置指南语言服务器、格式化与 Tailwind 补全集成Zed 编辑器 HTML 语言支持配置指南语言服务器、格式化与 Tailwind 补全集成 Zed 通过官方 HTML 扩展 提供对 .html / .htm开发工具代码编辑器桌面应用上一篇One-API终极指南如何无缝集成智谱GLM-4打造企业级AI中台下一篇WinFsp重新定义Windows文件系统开发的架构范式创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考