返回资讯中心
外部精选
软件工程
#开发者实时流

Sonda:用 Rust 构建的开源静态分析工具发布

来源标题:Sonda – An open-source static analysis tool built in Rust

Sonda 是一款用 Rust 构建的开源静态代码分析与质量门禁工具,风格类似 SonarQube,支持 JavaScript、TypeScript、Python、Java、C#、C/C++ 和 Rust。它针对每次变更只评估新增代码,并可让用户从任意指标逐层下钻到引发问题的具体代码行。工具还按项目顶层目录分别统计问题、趋势、债务与 CODEOWNERS 负责人,并依据 CWE 与 OWASP Top 10 标注漏洞、检查依赖的 OSV 公告。

Hacker News 最新lvaoliveira2026/11/7 · 今天13 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

Sonda 是一个开源静态代码分析与质量门禁工具,风格类似 SonarQube,支持 JavaScript、TypeScript、Python、Java、C#、C/C++ 和 Rust。它针对每次变更中的新代码进行评判——并且可以从任意指标一路下钻到引发问题的具体代码行。

终端输出摘自真实报告的删节版;其中的数字为示例数据。

覆盖率下降不只是一个待办事项。点击任意指标,Sonda 会在你的项目中逐层下钻——项目、组件、文件——直到抵达问题背后的具体位置。

没有字母评级,也没有仅靠颜色传达的警告。每一种状态都有形状、文字和原因说明。

项目的每个顶层目录都会根据 CODEOWNERS 获得各自的问题、趋势、债务和负责人。

可靠性、安全性和可维护性以五级量表呈现。高度与颜色一致,因此无需图例也能读懂刻度。

设定变更必须满足的条件。Sonda 会指出哪个条件未通过、差距多大——并以退出码 1 结束,让 CI 停止。

每种严重级别都将字形与标签配对——在终端、截图中或对色盲读者都清晰可辨。

漏洞会附带其 CWE 编号和 OWASP Top 10 分类,同时你的 lockfile 中的依赖会对照 OSV 公告进行检查。

■ Blocker src/config.ts:14 不应硬编码密码 CWE-798 · OWASP A07 · 新代码

自托管,Rust 驱动 一个快速二进制文件并行扫描,且从不运行你的代码。服务器将你的源码和发现结果保存在你自己的基础设施上。

一个二进制文件。在笔记本电脑或任意 CI 中扫描、评判新代码、在门禁失败时让构建失败。无需服务器。

在 Linux 和 macOS 上,安装脚本会为你的系统选择对应的二进制文件,并对照发布版本的校验和进行验证。Windows 也有二进制文件:参见 docs/install.md。

生成一个带注释的 sonda.toml,包含默认质量门禁,然后按需调整。

评判自 main 以来的变更。门禁决定退出码:0 通过,1 失败。

SARIF 用于 GitHub 代码扫描、GitLab 和 IDE,或 JSON 供你自己的工具使用。

使用 Docker Compose 自托管。保留每次分析,包含趋势、分类、负责人,并将结果发布到 GitHub pull request 和 Web 应用中。

从发布版本的克隆开始:Docker Compose 和 PostgreSQL,密钥已为你创建。

打开 http://127.0.0.1:9000 并以 admin 身份登录。密码位于 secrets/admin_password。

粘贴其 GitHub URL。Sonda 会创建项目、其 token,以及上传每次分析的 CI workflow。

或者自行发送任意扫描。然后由服务器的门禁决定退出码。

在推送前本地分析,然后让 CI 运行相同的扫描并报告门禁结果。不指定 --new-code 时,Sonda 会自行选择 pull request 的基线或已推送的提交。

name: sonda on: [pull_request] jobs: analyze: runs-on: ubuntu-latest steps:

历史:每一个决策,都被记录下来。

Sonda 以开放方式构建。每一个架构选择——解析器如何沙箱化、新代码如何被发现、token 可以做什么——都会在后续代码之前作为公开决策记录写下来。

1.0 是一个承诺:在 1.x 内升级不会破坏任何人的使用。它所需的功能很少——剩下的工作主要是验证已构建的内容。

首个带标签的发布:发布页面上带校验和的二进制文件,文档指向该标签。

1.0 承诺的内容被写下来——CLI、sonda.toml、报告格式、上传协议——并由 CI 中的兼容性任务强制执行。

每次发布都会在 CI 中升级一个装满真实数据的服务器,并检查没有数据丢失。保留策略和存储增长已记录在案。

Linux、macOS 和 Windows 的二进制文件,GHCR 上的服务器镜像,来源证明和 SBOM——全部来自一个标签,无需手工操作。

在每种语言的真实仓库上运行四周,将发现结果与同一提交上 SonarQube 的结果进行比较,并测量性能。

服务器的威胁模型、完整的安全审查,以及用于上传的私有 CA。

遵循分类的 pull request 装饰,无页面闪烁,每个路线图项目都标明在 1.0 之前或之后。

超越 GitHub 的 pull request 装饰:摘要评论、行内评论和状态检查。

带 PKCE 的 OpenID Connect。已设计,暂缓。

修复和缺失的测试以草稿 pull request 形式提出,经重新扫描验证,由人工合并。

根据公共入口点是否可达来对漏洞进行排序。

将模式作为模式来读取:语法、语言和回溯规则。

语义层的其余部分:更多绑定器、表达式类型、重载。

团队作为项目的负责人,以及健康评分随时间的变化。

一个评判你代码的工具,本身也应该接受评判。Sonda 的分析器、规则和路线图在 GitHub 上以 MIT 或 Apache-2.0 许可证开发,欢迎各种规模的贡献。

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →