四个代码语义搜索工具的对比

测试目标: linux 内核源码 20 个测试项 编号 查询主题 预期相关区域 1 驱动 probe 失败后如何按相反顺序释放已经初始化的资源 drivers/base 、 drivers/net 、 drivers/pci 2 设备移除时如何取消定时器、延迟工作队列,避免卸载后的回调访问已释放对象...
四个代码语义搜索工具的对比
四个代码语义搜索工具的对比

测试目标:
linux 内核源码
20 个测试项

编号 查询主题 预期相关区域 1 驱动 probe 失败后如何按相反顺序释放已经初始化的资源 drivers/basedrivers/netdrivers/pci 2 设备移除时如何取消定时器、延迟工作队列,避免卸载后的回调访问已释放对象 drivers/netkernel/workqueue.cinclude/linux/timer.h 3 使用引用计数管理内核对象生命周期,最后一个引用释放时执行清理 libinclude/linux/kref.hkernel 4 使用 RCU 保护读路径,更新路径删除对象后延迟释放内存 kernel/rcuinclude/linux/rcupdate.hnet 5 中断处理程序只完成快速确认,耗时工作交给线程化中断处理 kernel/irqdrivers 6 网络驱动的 NAPI 轮询如何根据 budget 处理接收队列并重新打开中断 net/coredrivers/netinclude/linux/netdevice.h 7 DMA buffer 的分配、映射、同步和释放流程 kernel/dmadrivers/dmainclude/linux/dma-mapping.h 8 块设备驱动如何处理请求超时、完成请求和错误上报 blockdrivers/block 9 文件系统元数据更新如何使用日志事务,并在失败时回滚或中止事务 fs 10 顺序读取文件时如何触发预读并填充 page cache mm/readahead.cmm/filemap.cfs 11 内存压力下子系统如何注册 shrinker 并回收缓存对象 mmfsinclude/linux/shrinker.h 12 页面分配如何考虑 NUMA 策略、节点回退和内存区域限制 mm/page_alloc.cmm/mempolicy.c 13 调度器在任务唤醒时如何选择 CPU 并把任务放入运行队列 kernel/sched 14 CPU 热插拔时子系统如何初始化和销毁每 CPU 状态 kernel/cpu.cinclude/linux/cpuhotplug.h 15 设备挂起和恢复过程中如何协调系统睡眠、电源域和 runtime PM drivers/base/powerinclude/linux/pm.h 16 内核启动参数如何被解析并影响早期初始化行为 initkernel/params.c 17 LSM 如何在文件打开、权限检查或进程操作中插入安全决策 securityinclude/linux/lsm_hook_defs.h 18 eBPF verifier 如何检查指针运算、边界和 helper 调用安全性 kernel/bpftools/testing/selftests/bpf 19 用户空间输入通过 copy_from_user 进入内核后如何进行长度校验和错误返回 fskernelinclude/linux/uaccess.h 20 内核代码如何通过锁顺序、lockdep 标注或专用锁类避免死锁 kernel/lockinginclude/linux/lockdep.h

四工具统一结果汇总

总览

测试对象为 Linux 内核稀疏检出源码,20 个主题均来自真实内核开发场景。四个工具都完成了 20 主题测试,没有命令级失败。

工具 完成数量 查询耗时合计 平均单条耗时 主要定位 fast-context 20/20 205s 10.3s 自然语言开发场景检索,整体最稳定 CodeGraph 20/20 20s 1.0s 结构化符号检索很强,自然语言 context 较弱 Ace 20/20 188s 9.4s 候选文件召回丰富,排序需要人工筛选 Semble 20/20 2843s 142.2s 主题命中波动大,部分底层主题准确,但成本最高,由于是内存索引,每次查询都要索引,对于大型代码库耗时几乎不可接受

Semble 全量测试累计出现 120 次 Recursion depth exceeded in chunk,每个主题 6 次;命令仍返回成功。fast-context 按每次查询后等待 15 秒执行,满足每分钟最多 4 次的限速要求。

四工具索引与耗时对比

工具 索引机制 首次索引或冷启动成本 20 主题查询耗时 平均单条查询耗时 索引是否可复用 备注 CodeGraph 显式本地索引,命令为 codegraph index 7m 11s 20s 1.0s 是 初次索引成本最高之一,但索引完成后查询最快;适合符号、调用关系和影响范围分析 fast-context 无显式本地索引;每次查询构建上下文并调用 Windsurf Devstral 无单独索引阶段 205s 10.3s 不适用 20 主题测试中每次查询后额外等待 15s 控制速率;205s 不包含等待时间 Ace search-context 自动索引并缓存到 .ace-tool/ 首次完整查询约 4m 31s 188s 9.4s 是 冷启动会包含上传、索引或缓存构建;后续全量查询明显变快 Semble 每次 semble search 启动时构建内存索引 无可复用持久索引;成本并入每次查询 47m 23s 142.2s 否 当前 CLI 不提供独立持久索引流程;20 条查询相当于重复构建检索上下文

关键结论

结论项 排序 一次性索引后查询速度 CodeGraph 最快,明显优于其他工具 冷启动自然语言检索成本 fast-context 较稳定;Ace 首次较慢但可缓存;Semble 每次都重建成本最高 适合频繁全量回归 CodeGraphAcefast-contextSemble 适合一次性语义探索 fast-contextAceSemble 适合已知符号结构分析 CodeGraph

口径说明

  • CodeGraph 的 7m 11s 来自本次对 Linux 稀疏检出源码执行 codegraph index 的实际输出。
  • Ace 的 4m 31s 来自首次 NAPI 主题查询,后续 20 主题全量测试使用已有缓存,耗时 188s。
  • fast-context 全量测试严格串行,并在每次查询后等待 15s;表中 205s 是查询本身耗时合计,不含 19 次等待。
  • Semble 全量测试耗时 47m 23s,且每条查询都出现 6 次 Recursion depth exceeded in chunk 警告;命令仍成功返回。

结论

场景 建议工具顺序 原因 不知道入口文件,使用自然语言描述开发任务 fast-contextAceSemble fast-context 命中核心路径最稳定;Ace 召回丰富;Semble 波动大 已知函数、结构体、宏或需要调用关系 CodeGraphrg CodeGraph 的符号定位和结构化关系检索优于自然语言搜索 需要快速获得候选文件列表 Acefast-context Ace 缓存后速度较好,结果覆盖面大 需要对结果做严格代码阅读入口 fast-contextCodeGraph fast-context 返回范围更贴近开发任务;CodeGraph 可补符号定义和关系 完整回归测试 fast-context 全量、Ace 全量、CodeGraph 符号基线、Semble 抽样 Semble 全量成本过高,不适合频繁复跑

质量标记

  • :前列结果直接命中核心文件或关键实现。
  • :返回相关区域,但排序、范围或主题覆盖需要人工筛选。
  • :返回弱相关、噪声较多或自然语言理解明显偏离。
编号 主题 fast-context CodeGraph context Ace Semble 建议优先 1 probe 失败资源回滚 高 中 高 低 fast-contextAce 2 remove 阶段取消 timer 和 workqueue 高 低 中 低 fast-context 3 引用计数生命周期 高 低 高 低 fast-contextAceCodeGraph 符号查询 4 RCU 读路径和延迟释放 高 中 中 高 Semblefast-contextCodeGraph 符号查询 5 线程化中断处理 高 低 高 低 fast-contextAce 6 NAPI budget 轮询 高 中 高 高 fast-contextAceSemble 7 DMA buffer 映射和同步 高 低 高 中 fast-contextAce 8 块层请求超时和完成 高 低 中 低 fast-contextAce 9 文件系统日志事务 高 低 高 低 fast-contextAce 10 顺序读预读和 page cache 高 低 高 中 fast-contextAce 11 shrinker 缓存回收 高 高 高 高 四者均可,优先 fast-contextAce 12 NUMA 页面分配 高 中 高 中 fast-contextAce 13 调度器唤醒和入队 高 低 中 低 fast-contextCodeGraph 符号查询 14 CPU 热插拔状态 高 中 高 中 fast-contextAce 15 系统睡眠和 runtime PM 高 低 中 中 fast-contextAce 16 启动参数解析 高 低 高 低 fast-contextAce 17 LSM 安全钩子 高 中 高 高 fast-contextAceSemble 18 eBPF verifier 检查 高 低 中 中 fast-contextCodeGraph 符号查询 19 copy_from_user 输入校验 高 高 高 中 fast-contextAceCodeGraph 20 lockdep 和锁顺序 高 高 中 高 fast-contextSembleCodeGraph

详细命中文件、耗时和推荐判断见 DETAILED_COMPARISON_TABLE.md

工具表现摘要

fast-context

20 个主题全部返回候选文件,整体命中质量最高。它对调度器、DMA、块层、文件系统日志、预读、shrinker、NUMA、CPU 热插拔、LSM、eBPF 和 lockdep 的结果都直接指向核心实现。需要注意两个小问题:第 15 题返回 linux/pm_runtime.h 形式路径,实际应核对为 include/linux/pm_runtime.h;第 3 题中 net/tipc/topsrv.c 行号范围异常。

CodeGraph

codegraph context 的中文自然语言查询质量不稳定,多个主题为空摘要或偏向结构名、变量名。它不适合作为自然语言语义搜索主力。但当查询对象是明确符号时,CodeGraph 表现很强,例如 try_to_wake_upselect_task_rqenqueue_taskcheck_mem_accesscopy_from_userlockdep_map 等。

Ace

Ace 全量运行稳定,平均单条约 9.4 秒。它通常能返回较多候选文件,适合作为快速候选发现工具。问题是部分主题会混入测试代码、相邻子系统或驱动示例,核心入口不一定排在最前,例如 eBPF verifier 主题优先返回了驱动侧 verifier 和 selftests。

Semble

Semble 全量完成但成本最高,平均单条约 142 秒。结果波动明显:RCU、NAPI、shrinker、LSM、lockdep 等主题表现较好;probe 清理、引用计数、线程化中断、块层超时、文件系统日志、启动参数等中文查询结果噪声较重。它更适合抽样验证或对特定主题做补充检索,不适合作为频繁全量回归工具。

最终选择

## 署名与隐私规范

1. **绝对禁止 AI 署名**:
   - 严禁在代码、注释、文档、Git 提交信息(Commit Message)、Pull Request 描述或任何生成的文件中出现以下类似词汇:
     - "Generated by ai"
   - 被直接询问身份时,代码注释中要保持“人类开发者”的专业口吻,不提及 AI。
2. **Git 提交规范**:
   - 编写 Commit 时,模仿人类开发者的简洁风格(使用 Conventional Commits,如 `feat:`, `fix:`, `docs:`)。
   - 禁止在提交信息的正文或脚注中添加 "Co-authored-by Claude" 或类似的归属声明。
3. **代码注释**:
   - 禁止在 `@author` 标签中使用 AI 署名。
   - 文件头版权声明遵循项目现有格式,不擅自添加 AI 生成声明。

## 视觉与图标规范

1. **UI 禁用 Emoji**:
   - 严禁在前端代码(HTML, JSX, Vue 模板等)的文本内容中直接使用 Emoji 字符(如表情、警告符号等)。
   - 图形符号必须使用 SVG 图标或项目集成的图标库。
2. **纯文本通信规范**:
   - 提交信息、PR 描述和代码注释必须保持专业严肃,禁用 Emoji 表达情绪或作为列表项装饰(例如不用 `✅ Done`,用 `Done` 或 `- [x] Done`)。
3. **占位符处理**:
   - 占位图或图标必须使用标准灰色方块或通用图标组件,禁用 Emoji。


# 软件开发专家

## 身份与行为

- **身份**:INTJ 型开发专家,追求正确、清晰、严谨。
- **行为**:优先保证正确性;发现前提错误直接指出;不主动延伸,不替用户规划后续;回答边界等同问题边界。

## 中文书写规范

- **词汇**:不压缩双音节词(如“运行”不写“跑”);不用英文直译搭配(如“获取数据”而非“拉取数据”)。
- **句法**:禁用“让我们”开头;禁用被动句滥用(如用“普遍认为”);禁用连续“的”字堆叠(超2个需拆句);禁用无主语前缀(如“值得注意的是”)。
- **语气**:严禁虚假共情(如“完全理解”)、居高临下(如“其实是想”)、虚假谦逊(如“仅供参考”)、情感操控(如“放心”)。
- **结构**:首句含实质信息直奔主题;完毕即止,无客服式结尾;无逻辑必要不分步。
- **其他**:禁止自造术语(如用“理解难度”);禁用无必要中英混搭;禁用网络流行语;禁用虚假因果关系(应用“可能与……有关”)。

## 自检

- 输出前确认:无单音节压缩、不自然搭配、翻译腔、虚假共情、居高临下、过度延伸、模板化起尾、未经论证结论。

## 代码检索规范
- 不知道文件位置、用自然语言定位功能实现:优先使用 `fast-context`;若认证、限流或失败,改用 `semble-
search`。
- 使用 `fast-context` 时请 在命令中载入 `$WINDSURF_API_KEY` 变量
- 只需要快速获取候选文件:使用 `ace-codebase-search`,但结果需二次筛选。
- 已知函数、类型、组件、符号名,或需要调用关系、影响范围、从 A 到 B 的流程追踪:优先使用 `CodeGraph MCP`。
- 查找精确字符串、错误文本、日志内容、配置键:使用 `rg`,不要使用语义搜索。
- 推荐流程:`fast-context` 或 `semble-search` 定位入口文件,再用 `CodeGraph MCP` 追踪结构关系,最后只读取
少量目标文件确认细节。
- 请减少使用先全仓读取或全仓 grep, 少用grep 重复验证 CodeGraph 已返回的结构化结果。

<!-- CODEGRAPH_START -->
## CodeGraph 规范

CodeGraph 是基于 AST 解析的符号关系知识库,专用于获取结构化信息。

### 检索选择指南

- **结构化问题**:优先使用 CodeGraph(找符号定义、查询调用关系、链路追踪、影响分析)。
- **字面量检索**:使用 Grep/Read(搜索特定字符串、注释、日志或已打开的文件)。

| 查询目标 | 推荐工具 |
|---|---|
| 查找符号 X 的定义位置 | `codegraph_search` |
| 查询谁调用了函数 Y | `codegraph_callers` |
| 查询函数 Y 调用了哪些方法 | `codegraph_callees` |
| 追踪从 X 到 Y 的调用路径 | `codegraph_trace` |
| 修改 Z 可能会影响哪些地方 | `codegraph_impact` |
| 查看 Y 的函数签名、源码或文档 | `codegraph_node` |
| 获取特定任务/区域的聚合上下文 | `codegraph_context` |
| 一次性查看多个相关符号的源码 | `codegraph_explore` |
| 列出指定路径下的文件 | `codegraph_files` |
| 检查索引是否健康 | `codegraph_status` |

### 核心原则

- **直接解答,禁止冗余检索**:对于架构或逻辑流问题,应结合 `codegraph_context`/`codegraph_trace` 和 `codegraph_explore` 快速获取结果。禁止通过多次 search 和 callers 自行重建路径,禁止派生不必要的文件读取子任务。
- **信任结果**:结果来自 AST 解析,禁止用 Grep 进行二次验证。
- **按名检索**:按名称搜索符号时优先用 `codegraph_search`,不要先用 Grep。
- **善用聚合工具**:获取上下文使用 `codegraph_context`,不要链式调用 `codegraph_search` + `codegraph_node`;批量查看源码使用 `codegraph_explore`,禁止循环调用 `codegraph_node`。
- **索引延迟**:文件写入后有约 500ms 索引延迟,修改文件后不要立即重新检索。

### 未初始化处理

- 若 `.codegraph/` 不存在,则自动创建, 如果在git仓库中 则自动添加相关忽略规则”
<!-- CODEGRAPH_END -->

附件:

四工具详细对比表

说明

  • :前列结果直接命中核心文件或关键实现。
  • :返回相关区域,但排序、范围或主题覆盖需要人工筛选。
  • :返回弱相关、噪声较多或自然语言理解明显偏离。
  • Semble 每条查询都有 6 次 Recursion depth exceeded in chunk 警告,表中不再逐行重复。
编号 主题 fast-context CodeGraph context Ace Semble 推荐判断 1 probe 失败资源回滚 高,16s:drivers/base/devres.cdrivers/net/can/m_can/m_can_platform.cdrivers/virtio/virtio_rtc_driver.c 中,1s:probe in drivers/block/aoe/aoecmd.cdrivers/net/wireless/purelifi/plfxlc/usb.cdrivers/net/wireless/zydas/zd_usb.c 高,21s:drivers/pci/probe.cdrivers/base/dd.cdrivers/pci/pcie/portdrv.c 低,163s:kernel/trace/trace_probe.hkernel/trace/trace_probe.cfs/afs/vl_probe.c 优先 fast-context;Ace 可补驱动核心框架 2 remove 阶段取消 timer 和 workqueue 高,10s:drivers/virtio/virtio_mem.cdrivers/virtio/virtio_balloon.cdrivers/net/ethernet/intel/igc/igc_main.c 低,1s:无有效摘要 中,7s:drivers/pci/remove.cnet/ncsi/ncsi-manage.cdrivers/base/devcoredump.c 低,154s:drivers/net/dsa/lantiq/mxl-gsw1xx_pce.hdrivers/net/dsa/lantiq/lantiq_pce.hdrivers/net/ethernet/microchip/vcap/vcap_ag_api.h 优先 fast-context;必要时用 rg cancel_work_sync 精确补充 3 引用计数生命周期 高,9s:include/linux/kref.hinclude/linux/refcount.hkernel/irq/manage.c 低,0s:无有效摘要 高,11s:lib/kobject.ckernel/fork.cfs/cachefiles/interface.c 低,139s:include/linux/mfd/mc13783.hfs/ext4/extents_status.hlib/crypto/arm/sha512-armv4.pl 优先 fast-context 和 Ace;已知符号用 CodeGraph 查 krefrefcount 4 RCU 读路径和延迟释放 高,12s:kernel/rcu/update.ckernel/rcu/tasks.hkernel/rcu/tree.c 中,1s:kernel/rcu/rcutorture.cinclude/linux/rcu_sync.hkernel/rcu/rcutorture.c 中,8s:mm/kfence/core.clib/kobject.clib/radix-tree.c 高,140s:kernel/rcu/update.ckernel/rcu/tree.hinclude/linux/rcupdate.h Semblefast-context 都可用;CodeGraph 适合查 call_rcukfree_rcu 5 线程化中断处理 高,14s:kernel/irq/manage.ckernel/irq/handle.cinclude/linux/interrupt.h 低,0s:无有效摘要 高,8s:kernel/irq/manage.ckernel/irq/handle.ckernel/irq/spurious.c 低,143s:include/linux/mfd/mt6323/registers.hdrivers/net/ethernet/spacemit/k1_emac.hinclude/dt-bindings/clock/mediatek,mt7981-clk.h 优先 fast-context 或 Ace;CodeGraph 查 request_threaded_irq 6 NAPI budget 轮询 高,10s:net/core/dev.cdrivers/net/virtio_net.cdrivers/net/ethernet/xilinx/xilinx_axienet_main.c 中,1s:include/net/gro.hinclude/linux/netdevice.hinclude/linux/netdevice.h 高,15s:drivers/net/ethernet/wangxun/libwx/wx_lib.cdrivers/net/ethernet/fungible/funeth/funeth_rx.cdrivers/net/ethernet/renesas/rswitch_main.c 高,141s:include/trace/events/napi.hdrivers/net/ethernet/amazon/ena/ena_netdev.cnet/core/dev.c 三个语义工具都可用;核心框架优先 fast-context 7 DMA buffer 映射和同步 高,9s:kernel/dma/mapping.cinclude/linux/dma-mapping.hinclude/linux/dma-map-ops.h 低,3s:drivers/block/aoe/aoe.hdrivers/net/ethernet/xscale/ixp4xx_eth.cdrivers/net/ethernet/xscale/ixp4xx_eth.c 高,11s:kernel/dma/mapping.ckernel/dma.ckernel/dma/direct.c 中,142s:include/linux/iio/buffer-dma.hinclude/linux/dma-buf.hinclude/uapi/linux/dma-buf.h 优先 fast-context 和 Ace;Semble 偏向 dma-buf 8 块层请求超时和完成 高,9s:block/blk-mq.cblock/blk-timeout.cblock/blk-settings.c 低,0s:无有效摘要 中,10s:drivers/block/nbd.cdrivers/block/brd.cdrivers/block/zloop.c 低,144s:include/uapi/drm/xe_drm.hinclude/dt-bindings/clock/hi3559av100-clock.hinclude/dt-bindings/clock/loongson,ls2k-clk.h 优先 fast-context;Ace 可补驱动实例 9 文件系统日志事务 高,10s:fs/jbd2/journal.cfs/jbd2/transaction.cfs/jbd2/commit.c 低,0s:无有效摘要 高,8s:fs/btrfs/tree-mod-log.cfs/ubifs/file.cfs/xfs/xfs_log.c 低,143s:include/scsi/viosrp.hdrivers/net/ethernet/marvell/mvpp2/mvpp2_main.cdrivers/net/ethernet/microchip/vcap/vcap_ag_api.h 优先 fast-context;Ace 可横向比较多个文件系统 10 顺序读预读和 page cache 高,9s:mm/filemap.cmm/readahead.cmm/internal.h 低,2s:fs/smb/client/cached_dir.hinclude/linux/cacheinfo.hfs/smb/client/dfs_cache.c 高,7s:fs/mpage.cmm/readahead.cfs/nfs/read.c 中,143s:mm/page_frag_cache.cinclude/linux/page_frag_cache.hfs/netfs/fscache_cache.c 优先 fast-context;Ace 可补 VFS 与文件系统读路径 11 shrinker 缓存回收 高,10s:mm/shrinker.cinclude/linux/shrinker.hmm/slab_common.c 高,1s:include/linux/shrinker.hinclude/linux/shrinker.hinclude/linux/shrinker.h 高,9s:mm/shrinker.cfs/super.cfs/f2fs/shrinker.c 高,142s:mm/shrinker.cinclude/linux/shrinker.hmm/shrinker_debug.c 四者均可;优先 fast-context 或 Ace 12 NUMA 页面分配 高,10s:mm/page_alloc.cmm/mempolicy.cinclude/linux/mempolicy.h 中,1s:include/linux/numa_memblks.hinclude/linux/numa_memblks.hinclude/linux/sched/numa_balancing.h 高,9s:mm/mempolicy.cmm/percpu.cmm/numa_emulation.c 中,143s:mm/numa_emulation.cmm/numa_memblks.carch/x86/include/asm/numachip/numachip_csr.h 优先 fast-context 和 Ace;CodeGraph 查具体符号 13 调度器唤醒和入队 高,10s:kernel/sched/core.ckernel/sched/sched.hkernel/sched/fair.c 低,0s:include/linux/cpu.harch/x86/boot/cpuflags.carch/x86/boot/cpuflags.h 中,8s:kernel/sched/rt.ckernel/sched/stop_task.ckernel/sched/sched.h 低,140s:kernel/cpu.cinclude/linux/cpumask.hkernel/bpf/cpumask.c 优先 fast-context;已知符号用 CodeGraph 查 try_to_wake_up 14 CPU 热插拔状态 高,9s:kernel/cpu.cinclude/linux/cpuhotplug.h 中,1s:include/linux/cpu.harch/x86/boot/cpuflags.carch/x86/boot/cpuflags.h 高,7s:kernel/cpu.ckernel/cpu.ckernel/cpu.c 中,138s:include/linux/cpumask.hkernel/cpu.cdrivers/base/cpu.c 优先 fast-context 和 Ace 15 系统睡眠和 runtime PM 高,10s:drivers/base/power/main.ckernel/power/suspend.cdrivers/base/power/common.c 低,1s:net/sched/sch_hfsc.cinclude/linux/perf_event.harch/x86/include/asm/pgtable_64_types.h 中,7s:drivers/net/wwan/iosm/iosm_ipc_protocol.ckernel/power/suspend.ckernel/power/autosleep.c 中,138s:include/linux/pm_runtime.hdrivers/base/power/runtime-test.cdrivers/base/power/runtime.c 优先 fast-context;Ace 和 Semble 可补 runtime PM 16 启动参数解析 高,10s:init/main.ckernel/params.c 低,1s:无有效摘要 高,9s:init/main.cinit/main.carch/x86/kernel/setup.c 低,138s:include/linux/mfd/mc13783.hinclude/dt-bindings/clock/intel,lgm-clk.hlib/crypto/arm/sha512-armv4.pl 优先 fast-context 和 Ace 17 LSM 安全钩子 高,9s:security/security.cinclude/linux/lsm_hook_defs.hsecurity/landlock/fs.c 中,0s:include/linux/lsm_hooks.hinclude/uapi/linux/lsm.hinclude/linux/lsm_hooks.h 高,8s:security/apparmor/lsm.csecurity/safesetid/lsm.ctools/testing/selftests/bpf/progs/lsm.c 高,138s:security/lsm_init.csecurity/lsm.hkernel/bpf/bpf_lsm.c 优先 fast-context 和 Ace;Semble 可补 LSM 初始化 18 eBPF verifier 检查 高,10s:kernel/bpf/verifier.ckernel/bpf/states.c 低,3s:kernel/bpf/btf.cfs/unicode/mkutf8data.cnet/netfilter/nf_conntrack_ftp.c 中,7s:drivers/net/ethernet/netronome/nfp/bpf/verifier.ctools/testing/selftests/bpf/progs/verifier_linked_scalars.ckernel/trace/bpf_trace.c 中,139s:include/uapi/linux/bpf.hkernel/bpf/log.ckernel/bpf/verifier.c 优先 fast-context;已知函数用 CodeGraph 19 copy_from_user 输入校验 高,10s:include/linux/uaccess.hinclude/asm-generic/access_ok.hkernel/fork.c 高,2s:include/linux/uaccess.harch/x86/include/asm/user_32.harch/x86/include/asm/user_64.h 高,9s:lib/usercopy.clib/strncpy_from_user.csecurity/landlock/syscalls.c 中,138s:arch/x86/lib/copy_mc.cinclude/linux/instrumented.hinclude/linux/uaccess.h fast-context、Ace、CodeGraph 都可用 20 lockdep 和锁顺序 高,9s:kernel/locking/lockdep.ckernel/locking/lockdep.hkernel/workqueue.c 高,1s:include/linux/lockdep_types.hinclude/linux/lockdep_types.hkernel/locking/lockdep_internals.h 中,9s:net/core/sock.cfs/locks.ckernel/locking/Makefile 高,137s:include/linux/lockdep.hkernel/locking/lockdep.ckernel/locking/lockdep_internals.h 优先 fast-context 和 Semble;CodeGraph 查 lockdep 符号

简要排序

维度 排序 自然语言开发场景准确性 fast-context > Ace > Semble > CodeGraph context 查询速度 CodeGraph > Acefast-context > Semble 候选文件覆盖面 Ace > fast-context > Semble > CodeGraph context 已知符号定位 CodeGraph > rg > 语义搜索工具 全量回归可复跑性 CodeGraph > Ace > fast-context > Semble

code-search-tools-bundle.7z (3.1 MB)

1 个帖子 - 1 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文