首页/新闻资讯/正文详情

sem支持32种编程语言完整清单:从TypeScript到SQL的代码diff利器

发布时间:2026/9/26 22:09:55 来源:云帆数科 栏目:资讯中心
sem支持32种编程语言完整清单:从TypeScript到SQL的代码diff利器
sem支持32种编程语言完整清单从TypeScript到SQL的代码diff利器【免费下载链接】semSemantic version control entity-level diffs, blame, and impact analysis on top of git. 28 languages via tree-sitter. Built for coding agents.项目地址: https://gitcode.com/gh_mirrors/sem7/semsem是一款构建在 Git 之上的语义化版本控制工具它通过 tree-sitter 解析代码把每个函数、类、方法提取为实体entity在实体级别做 diff而不是行级别。一句话概括——git 告诉你第 32 到 38 行被修改了sem 告诉你authenticateUser函数被修改了。 为什么需要实体级代码diff传统git diff的输出是行号变化存在两个痛点噪音多一次代码格式化或注释修改会产生几十个假变化信息量低你无法立刻知道哪个函数坏了、影响哪些调用方sem 用三阶段实体匹配精确 ID 匹配 → 结构哈希匹配 → 模糊相似度 80% 判定重命名解决这个问题能识别重命名和移动还能区分纯格式改动和真实逻辑改动。 32种编程语言支持清单核心功能一览sem 对以下 32 种编程语言提供完整的实体提取能力无需任何配置放进任意 Git 仓库即可用#语言文件扩展名可提取的实体1TypeScript.ts.tsx.mts.cts函数、类、接口、类型、枚举、导出2JavaScript.js.jsx.mjs.cjs.es6函数、类、变量、导出3Python.py.pyi函数、类、带装饰器定义4Go.go函数、方法、类型、变量、常量5Rust.rs函数、结构体、枚举、impl、trait、模块6Java.java类、方法、接口、枚举、字段、构造器7C.c.h函数、结构体、枚举、联合体、typedef8C.cpp.cc.cxx.hpp.hh.hxx函数、类、结构体、枚举、命名空间、模板9C#.cs类、方法、接口、枚举、结构体、属性10Ruby.rb方法、类、模块11PHP.php.inc.phtml.module函数、类、方法、接口、trait、枚举12Swift.swift函数、类、协议、结构体、枚举、属性13Elixir.ex.exs模块、函数、宏、guard、协议14Bash.sh函数15Fish.fish函数16Lua.lua函数全局/局部/表方法等17HCL/Terraform.hcl.tf.tfvars块、属性嵌套块限定名18Kotlin.kt.kts类、接口、对象、函数、属性、伴生对象19Fortran.f90.f95.f03.f08.f.for函数、子程序、模块、程序20Vue.vue模板/脚本/样式块 内部 TS/JS 实体21XML.xml.plist.svg.csproj等元素嵌套、标签名识别22ERB.erb.html.erb块、表达式、代码标签23Svelte.svelte.svelte.js.svelte.ts组件块 rune JS/TS 模块24Perl.pl.pm.t子程序、包25Dart.dart类、mixin、扩展、枚举、类型别名、函数26OCaml.ml.mli值、模块、类型、类、外部声明27Scala.scala.sc.sbt.kojo.mill类、对象、trait、枚举、函数、val、扩展28Nix.nix绑定、inherit 声明29Haskell.hs函数、签名、数据类型、newtype、类、实例30Elm.elm值/类型/端口/中缀声明31Clojure.clj.cljs.cljcvar、函数、宏、多方法、协议、记录、类型32D.d.di模块、函数、类、结构体、接口、模板、别名️ SQL数据库脚本也能做语义diff清单中的SQL.sql.psql.pgsql.ddl特别值得一提——它可以提取表、视图、函数、索引、类型、schema、触发器、序列等实体。改数据库迁移脚本时sem diff 能直接告诉你users表结构和get_order函数被修改了而不是让你面对几百行文本差异。 额外支持的结构化数据格式除 32 种编程语言外sem 还内置了 7 种数据格式插件JSON、YAML、TOML、EDN、CSV、Markdown、LaTeX分别把属性路径、节、行、标题、章节提取为实体。其余文件自动退化为分块 diff不会报错。 特殊扩展名可以写.semrc映射无扩展名文件会自动嗅探shebang、vim modeline、package/import等结构启发式覆盖 30 种语言。⚡ 3分钟上手安装与核心命令一键安装 sem 的多种方法# HomebrewmacOS / Linux brew install sem-cli # npm安装到 node_modules用 npx sem 调用 npm install --save-dev ataraxy-labs/sem # Cargo从源码安装 cargo install sem-cli之后随时用sem update升级到最新版本。最高频的 5 个命令命令作用典型用法sem diff实体级 diff含重命名检测与词级高亮sem diff --format jsonsem impact跨文件依赖图改这个实体会波及谁sem impact authenticateUser --depssem blame实体级 blame谁最后改了每个函数sem blame src/auth.tssem log追踪单个实体的演化历史sem log authenticateUser -vsem find/sem grep冷启动快速定位定义在哪、谁在调用sem callers diff_command执行sem setup后git diff会自动输出实体级结果所有调用git diff的工具包括 AI 编程代理都无需改动即可获得 sem 输出。 为 AI 编程代理而生MCP 集成sem 内置 MCPModel Context Protocol服务一条命令即可接入 Claude Code 等客户端claude mcp add sem -- sem mcp代理将获得 8 个实体级工具sem_entities、sem_diff、sem_blame、sem_impact、sem_log、sem_context、sem_find、sem_grep。相比 grep 可能漏掉调用方代理可以直接问如果我改submitOrder什么会坏从依赖图获得确定性答案省 token 又不漏依赖。 项目结构与延伸阅读模块说明crates/sem-core/核心解析引擎实体提取、图构建、增量索引crates/sem-cli/命令行入口与各子命令实现crates/sem-mcp/MCP 服务器实现action/GitHub Action每个 PR 自动生成实体级评论docs/llms.txt面向 AI 的精简文档CONTRIBUTING.md如何为 sem 添加新语言只需配置依赖零解析器代码每种语言的实体提取规则都在 crates/sem-core/src/parser/plugins/code/languages.rs 中声明式定义AST 节点类型 → 实体类型映射这也是 32 种语言能低成本覆盖的原因。✅ 一句话总结无论你的仓库是 TypeScript 前端、Python 后端、Rust 系统组件还是 SQL 迁移脚本sem 都能把代码 diff 从行升级到函数/类级别——支持 32 种语言开箱即用并为 AI 编程代理提供实体级上下文。【免费下载链接】semSemantic version control entity-level diffs, blame, and impact analysis on top of git. 28 languages via tree-sitter. Built for coding agents.项目地址: https://gitcode.com/gh_mirrors/sem7/sem创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

DeepOpen Laya 第二轮训练方法深度解析:SupCon 成组采样、R-Drop 正则化与权重/概率集成的完整实验设计
DeepOpen Laya 第二轮训练方法深度解析:SupCon 成组采样、R-Drop 正则化与权重/概率集成的完整实验设计

【免费下载链接】deepopen 非自回归System 1决策引擎,专为结构化类型决策场景设计 DeepOpen Multilingual, non-autoregressive System 1 decision engine. 项目地址: https://gitcode.com/gh_mirrors/de/deepopen 点击查看 免费下载 导读 本文以 ROU… · 2026/9/26 22:09:55

Sketch智能占位符引擎:JSON Schema驱动的假数据生成方案
Sketch智能占位符引擎:JSON Schema驱动的假数据生成方案

简介:sketch-data-faker 是一款面向UI/UX设计师与前端开发者的Sketch智能占位符插件,专为提升原型设计效率而生。它基于 Faker.js 等数据源,提供130余种可预测的随机内容类型(如姓名、邮箱、电话、段落、地址等)&#… · 2026/9/26 22:09:48

2026最新wordpressthemeforfreegreen实战避坑指南
2026最新wordpressthemeforfreegreen实战避坑指南

2026最新wordpressthemeforfreegreen实战避坑指南 找建站公司怕被坑高价?这大概是无数站长和创业者深夜里最真实的焦虑。你明明只想做个简单的展示站,报价单却动辄上万,还夹杂着各种看不懂的“功能溢价”。别慌,2026最… · 2026/9/26 22:09:16

测试意图精准定义:从模糊Prompt到可度量的大模型输出规格
测试意图精准定义:从模糊Prompt到可度量的大模型输出规格

如果你也像我一样,在调试大模型输出时经常遇到一种“说不清”的失败——AI没有报错,回答也流畅,但结果就是不对味,那这篇文章很可能就是为你写的。我最近在给一个客服工单分类模块做回归测试,模型在Golden Set上的准确… · 2026/9/26 22:50:49

MybatisPlus分页失效与500条限制:原理、排查与避坑指南
MybatisPlus分页失效与500条限制:原理、排查与避坑指南

先说个真实场景:上周同事小周丢过来一段代码,说MybatisPlus分页出邪门问题了——pageSize传1000,查出来只有500条;传5000,结果还是500条。更气人的是,换了个查询方法,又变成全表数据一起返回&am… · 2026/9/26 22:50:45

SpringBoot+Vue医院挂号系统实战:防超卖与数据库设计
SpringBoot+Vue医院挂号系统实战:防超卖与数据库设计

1. 一个挂号系统的业务边界:别把毕设做成“伪需求堆砌”1.1 患者、医生、管理员三类角色各管什么我先说一个很常见的现象:很多人在做课设的时候,习惯性地把 SpringBoot 后端拆成“用户管理、科室管理、医生管理、预约管理”四个模块&#xff… · 2026/9/26 22:50:39

Java内部类与内存泄漏:静态、匿名、局部内部类的本质区别与选型指南
Java内部类与内存泄漏:静态、匿名、局部内部类的本质区别与选型指南

1. 内部类问题的起点:从一次线上内存泄漏说起大概两年前,我们团队上线了一个资讯类App,灰度测试第三天,后台就收到了不少"手机发烫、切后台后再回来卡成PPT"的反馈。排到后面才发现,某几个页面在退出后&… · 2026/9/26 22:50:39

Unity住宅道具合集实战:从预制体到场景搭建的完整指南
Unity住宅道具合集实战:从预制体到场景搭建的完整指南

讲真,做模拟经营类游戏最让人头疼的环节,往往不是玩法设计,而是“房子里的那一堆家具”。我最近在Unity里捣鼓一个家居建造项目,人手有限,美术排期又排不上,就在资源商店挑了一套居民住宅道具合集&#xff… · 2026/9/26 22:50:39

Maven 核心原理与实战:依赖管理、仓库配置与生命周期详解
Maven 核心原理与实战:依赖管理、仓库配置与生命周期详解

1. Maven 到底是什么:从“包管理地狱”到“一键构建” 先聊一个老生常谈但必须说透的问题:Maven 是干嘛的?很多新手在网上搜“Maven 学习内容”,搜出来的全是下载安装、环境变量、IDEA 配置这类教程,看完了能用&#x… · 2026/9/26 22:50:39

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码