s
1

sem:面向 Git 仓库的语义代码变更分析工具

sem 在 Git 之上提供按函数、类、方法和类型组织的代码差异、归因、影响分析与历史查看,帮助开发者理解代码实体如何变化、相互依赖以及可能受影响的测试。它支持多种语言和数据格式,可在 Git 仓库中直接使用,并提供机器可读输出。

链接直达

sem:面向 Git 仓库的语义代码变更分析工具

原站网页截图,页面可能随时间更新。

sem 是一个运行在 Git 之上的命令行工具,将传统按代码行查看变更的方式提升为按函数、类、方法和类型查看。它面向需要理解代码结构、追踪变更影响或为自动化工具提供更有组织的代码上下文的开发者。

用途与适用场景

sem 用代码实体而不是单纯的文本行来呈现 Git 仓库中的变化。使用者可以查看哪些函数被新增、修改或删除,追踪某个实体最后由哪个提交改动,并分析一个函数的依赖项、调用方和传递影响范围。对于需要审查提交、理解陌生代码、定位变更波及范围以及整理特定函数的历史记录等场景,这种视角能够把结构信息集中展示出来。

工具也提供面向代码上下文的输出:指定实体后,可以获得该实体、依赖项和调用方组成的上下文,并设置令牌预算,适合需要把有限代码上下文交给外部处理工具的工作流。

准备与上手

sem 是命令行程序,官网给出的安装方式包括通过 Homebrew 安装 sem-cli,也可以通过 Cargo 从其代码仓库安装。安装后,在任意 Git 仓库中运行相应命令即可使用,官网强调不需要配置文件或插件。

执行 sem setup 可以创建包装脚本、设置 Git 的全局外部 diff 配置,并安装提交前钩子,使仓库中的 git diff 使用 sem 的差异展示。若要撤销这一设置,可运行 sem unsetup。不使用该集成时,也可以直接调用 sem 的各项命令。

主要功能

sem diff 提供实体级差异,支持重命名识别、结构哈希和行内词级高亮,并显示文件中新增、修改或删除的函数等实体。sem blame 按实体标记最后修改每个函数、类或方法的提交;sem log 则查看单个实体经历过的提交和变化。

sem impact 展示跨文件依赖关系,包括目标实体依赖的内容、使用它的实体、传递影响数量以及受影响的测试。sem entities 列出指定路径下的函数、类、方法和类型及其行号范围。sem context 根据令牌预算整理目标实体、依赖项和调用方的上下文。所有命令都支持 --json,用于生成机器可读输出。

覆盖范围与限制

官网列出的支持范围包括 TypeScript、JavaScript、Python、Go、Rust、Java、C、C++、C#、Ruby、PHP、Swift、Kotlin、Elixir、Bash、HCL、Fortran、Vue、Svelte、XML、ERB、Dart、Perl、OCaml、Scala 和 Zig,共 26 种语言;同时支持 JSON、YAML、TOML、CSV 和 Markdown 等数据格式。

sem 依赖对代码结构的解析来识别实体,因此结果围绕可识别的函数、类、方法、类型及其关系展开,并不只是原始文本差异。官网发布的 0.29.0 版本说明提到,该版本扩展了 C、C++、C#、Rust、Java、Kotlin 和 Elixir 的实体类型,支持将 .h 文件按 C++ 读取,并能恢复 tree-sitter 无法解析区域中的定义。官网还展示了典型差异耗时为 8 毫秒,但实际表现会随仓库内容和运行环境变化。

sem 能否输出适合程序处理的结果?

可以。所有命令都支持 --json,可生成机器可读输出。

sem 是否只能分析一种编程语言?

不是。官网列出 26 种支持的语言,覆盖 TypeScript、JavaScript、Python、Go、Rust、Java、C++ 等多种常见语言,并支持若干数据格式。


访问软件官网 · 查看资料来源

相关推荐

N

Neovim 是一款基于 Vim 的文本编辑器,强调可扩展性、易用性和跨环境使用。它支持 Lua 插件、Vimscript、LSP、Tree-sitter、终端,以及通过 RPC 连接的图形界面和其他扩展。

D

DBeaver Community 是一款免费、开源的通用数据库管理工具,适合个人项目。它支持连接和探索 MySQL、MariaDB、PostgreSQL、SQLite、SQL Server、Apache 家族等关系型数据库,并提供数据编辑、SQL 编辑、元数据管理、任务管理和数据库维护工具。

w

watchexec 是一个命令行工具,用于监视当前目录中的文件变化,并在变化发生时执行指定命令。它适合自动启动构建流程、重启开发服务器、检测活动,减少反复手动按回车执行命令的操作。

T

Tracely-ai 将 AI Agent 的生产追踪、质量评估、故障聚类和回归测试连接起来。它可以接收 Agent trace,对对话、运行或单个 span 进行评估,将失败运行冻结为可重放测试,并在 Pull Request 中发现回归时阻止合并。

s

simutil 是面向移动开发和测试的设备工具集,提供桌面应用、TUI 与 CLI。它可启动、关闭、连接、投屏、控制、录制安卓和苹果设备,并支持批量场景执行、日志查看、插件扩展及脚本自动化。

评论

暂无评论,来抢沙发~