测试目标:
linux 内核源码
20 个测试项
drivers/base、drivers/net、drivers/pci
2
设备移除时如何取消定时器、延迟工作队列,避免卸载后的回调访问已释放对象
drivers/net、kernel/workqueue.c、include/linux/timer.h
3
使用引用计数管理内核对象生命周期,最后一个引用释放时执行清理
lib、include/linux/kref.h、kernel
4
使用 RCU 保护读路径,更新路径删除对象后延迟释放内存
kernel/rcu、include/linux/rcupdate.h、net
5
中断处理程序只完成快速确认,耗时工作交给线程化中断处理
kernel/irq、drivers
6
网络驱动的 NAPI 轮询如何根据 budget 处理接收队列并重新打开中断
net/core、drivers/net、include/linux/netdevice.h
7
DMA buffer 的分配、映射、同步和释放流程
kernel/dma、drivers/dma、include/linux/dma-mapping.h
8
块设备驱动如何处理请求超时、完成请求和错误上报
block、drivers/block
9
文件系统元数据更新如何使用日志事务,并在失败时回滚或中止事务
fs
10
顺序读取文件时如何触发预读并填充 page cache
mm/readahead.c、mm/filemap.c、fs
11
内存压力下子系统如何注册 shrinker 并回收缓存对象
mm、fs、include/linux/shrinker.h
12
页面分配如何考虑 NUMA 策略、节点回退和内存区域限制
mm/page_alloc.c、mm/mempolicy.c
13
调度器在任务唤醒时如何选择 CPU 并把任务放入运行队列
kernel/sched
14
CPU 热插拔时子系统如何初始化和销毁每 CPU 状态
kernel/cpu.c、include/linux/cpuhotplug.h
15
设备挂起和恢复过程中如何协调系统睡眠、电源域和 runtime PM
drivers/base/power、include/linux/pm.h
16
内核启动参数如何被解析并影响早期初始化行为
init、kernel/params.c
17
LSM 如何在文件打开、权限检查或进程操作中插入安全决策
security、include/linux/lsm_hook_defs.h
18
eBPF verifier 如何检查指针运算、边界和 helper 调用安全性
kernel/bpf、tools/testing/selftests/bpf
19
用户空间输入通过 copy_from_user 进入内核后如何进行长度校验和错误返回
fs、kernel、include/linux/uaccess.h
20
内核代码如何通过锁顺序、lockdep 标注或专用锁类避免死锁
kernel/locking、include/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 每次都重建成本最高
适合频繁全量回归
CodeGraph、Ace、fast-context、Semble
适合一次性语义探索
fast-context、Ace、Semble
适合已知符号结构分析
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-context、Ace、Semble
fast-context 命中核心路径最稳定;Ace 召回丰富;Semble 波动大
已知函数、结构体、宏或需要调用关系
CodeGraph、rg
CodeGraph 的符号定位和结构化关系检索优于自然语言搜索
需要快速获得候选文件列表
Ace、fast-context
Ace 缓存后速度较好,结果覆盖面大
需要对结果做严格代码阅读入口
fast-context、CodeGraph
fast-context 返回范围更贴近开发任务;CodeGraph 可补符号定义和关系
完整回归测试
fast-context 全量、Ace 全量、CodeGraph 符号基线、Semble 抽样
Semble 全量成本过高,不适合频繁复跑
质量标记
高:前列结果直接命中核心文件或关键实现。中:返回相关区域,但排序、范围或主题覆盖需要人工筛选。低:返回弱相关、噪声较多或自然语言理解明显偏离。
fast-context、Ace
2
remove 阶段取消 timer 和 workqueue
高
低
中
低
fast-context
3
引用计数生命周期
高
低
高
低
fast-context、Ace、CodeGraph 符号查询
4
RCU 读路径和延迟释放
高
中
中
高
Semble、fast-context、CodeGraph 符号查询
5
线程化中断处理
高
低
高
低
fast-context、Ace
6
NAPI budget 轮询
高
中
高
高
fast-context、Ace、Semble
7
DMA buffer 映射和同步
高
低
高
中
fast-context、Ace
8
块层请求超时和完成
高
低
中
低
fast-context、Ace
9
文件系统日志事务
高
低
高
低
fast-context、Ace
10
顺序读预读和 page cache
高
低
高
中
fast-context、Ace
11
shrinker 缓存回收
高
高
高
高
四者均可,优先 fast-context 或 Ace
12
NUMA 页面分配
高
中
高
中
fast-context、Ace
13
调度器唤醒和入队
高
低
中
低
fast-context、CodeGraph 符号查询
14
CPU 热插拔状态
高
中
高
中
fast-context、Ace
15
系统睡眠和 runtime PM
高
低
中
中
fast-context、Ace
16
启动参数解析
高
低
高
低
fast-context、Ace
17
LSM 安全钩子
高
中
高
高
fast-context、Ace、Semble
18
eBPF verifier 检查
高
低
中
中
fast-context、CodeGraph 符号查询
19
copy_from_user 输入校验
高
高
高
中
fast-context、Ace、CodeGraph
20
lockdep 和锁顺序
高
高
中
高
fast-context、Semble、CodeGraph
详细命中文件、耗时和推荐判断见 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_up、select_task_rq、enqueue_task、check_mem_access、copy_from_user、lockdep_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警告,表中不再逐行重复。
drivers/base/devres.c;drivers/net/can/m_can/m_can_platform.c;drivers/virtio/virtio_rtc_driver.c
中,1s:probe in drivers/block/aoe/aoecmd.c;drivers/net/wireless/purelifi/plfxlc/usb.c;drivers/net/wireless/zydas/zd_usb.c
高,21s:drivers/pci/probe.c;drivers/base/dd.c;drivers/pci/pcie/portdrv.c
低,163s:kernel/trace/trace_probe.h;kernel/trace/trace_probe.c;fs/afs/vl_probe.c
优先 fast-context;Ace 可补驱动核心框架
2
remove 阶段取消 timer 和 workqueue
高,10s:drivers/virtio/virtio_mem.c;drivers/virtio/virtio_balloon.c;drivers/net/ethernet/intel/igc/igc_main.c
低,1s:无有效摘要
中,7s:drivers/pci/remove.c;net/ncsi/ncsi-manage.c;drivers/base/devcoredump.c
低,154s:drivers/net/dsa/lantiq/mxl-gsw1xx_pce.h;drivers/net/dsa/lantiq/lantiq_pce.h;drivers/net/ethernet/microchip/vcap/vcap_ag_api.h
优先 fast-context;必要时用 rg cancel_work_sync 精确补充
3
引用计数生命周期
高,9s:include/linux/kref.h;include/linux/refcount.h;kernel/irq/manage.c
低,0s:无有效摘要
高,11s:lib/kobject.c;kernel/fork.c;fs/cachefiles/interface.c
低,139s:include/linux/mfd/mc13783.h;fs/ext4/extents_status.h;lib/crypto/arm/sha512-armv4.pl
优先 fast-context 和 Ace;已知符号用 CodeGraph 查 kref、refcount
4
RCU 读路径和延迟释放
高,12s:kernel/rcu/update.c;kernel/rcu/tasks.h;kernel/rcu/tree.c
中,1s:kernel/rcu/rcutorture.c;include/linux/rcu_sync.h;kernel/rcu/rcutorture.c
中,8s:mm/kfence/core.c;lib/kobject.c;lib/radix-tree.c
高,140s:kernel/rcu/update.c;kernel/rcu/tree.h;include/linux/rcupdate.h
Semble 与 fast-context 都可用;CodeGraph 适合查 call_rcu、kfree_rcu
5
线程化中断处理
高,14s:kernel/irq/manage.c;kernel/irq/handle.c;include/linux/interrupt.h
低,0s:无有效摘要
高,8s:kernel/irq/manage.c;kernel/irq/handle.c;kernel/irq/spurious.c
低,143s:include/linux/mfd/mt6323/registers.h;drivers/net/ethernet/spacemit/k1_emac.h;include/dt-bindings/clock/mediatek,mt7981-clk.h
优先 fast-context 或 Ace;CodeGraph 查 request_threaded_irq
6
NAPI budget 轮询
高,10s:net/core/dev.c;drivers/net/virtio_net.c;drivers/net/ethernet/xilinx/xilinx_axienet_main.c
中,1s:include/net/gro.h;include/linux/netdevice.h;include/linux/netdevice.h
高,15s:drivers/net/ethernet/wangxun/libwx/wx_lib.c;drivers/net/ethernet/fungible/funeth/funeth_rx.c;drivers/net/ethernet/renesas/rswitch_main.c
高,141s:include/trace/events/napi.h;drivers/net/ethernet/amazon/ena/ena_netdev.c;net/core/dev.c
三个语义工具都可用;核心框架优先 fast-context
7
DMA buffer 映射和同步
高,9s:kernel/dma/mapping.c;include/linux/dma-mapping.h;include/linux/dma-map-ops.h
低,3s:drivers/block/aoe/aoe.h;drivers/net/ethernet/xscale/ixp4xx_eth.c;drivers/net/ethernet/xscale/ixp4xx_eth.c
高,11s:kernel/dma/mapping.c;kernel/dma.c;kernel/dma/direct.c
中,142s:include/linux/iio/buffer-dma.h;include/linux/dma-buf.h;include/uapi/linux/dma-buf.h
优先 fast-context 和 Ace;Semble 偏向 dma-buf
8
块层请求超时和完成
高,9s:block/blk-mq.c;block/blk-timeout.c;block/blk-settings.c
低,0s:无有效摘要
中,10s:drivers/block/nbd.c;drivers/block/brd.c;drivers/block/zloop.c
低,144s:include/uapi/drm/xe_drm.h;include/dt-bindings/clock/hi3559av100-clock.h;include/dt-bindings/clock/loongson,ls2k-clk.h
优先 fast-context;Ace 可补驱动实例
9
文件系统日志事务
高,10s:fs/jbd2/journal.c;fs/jbd2/transaction.c;fs/jbd2/commit.c
低,0s:无有效摘要
高,8s:fs/btrfs/tree-mod-log.c;fs/ubifs/file.c;fs/xfs/xfs_log.c
低,143s:include/scsi/viosrp.h;drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c;drivers/net/ethernet/microchip/vcap/vcap_ag_api.h
优先 fast-context;Ace 可横向比较多个文件系统
10
顺序读预读和 page cache
高,9s:mm/filemap.c;mm/readahead.c;mm/internal.h
低,2s:fs/smb/client/cached_dir.h;include/linux/cacheinfo.h;fs/smb/client/dfs_cache.c
高,7s:fs/mpage.c;mm/readahead.c;fs/nfs/read.c
中,143s:mm/page_frag_cache.c;include/linux/page_frag_cache.h;fs/netfs/fscache_cache.c
优先 fast-context;Ace 可补 VFS 与文件系统读路径
11
shrinker 缓存回收
高,10s:mm/shrinker.c;include/linux/shrinker.h;mm/slab_common.c
高,1s:include/linux/shrinker.h;include/linux/shrinker.h;include/linux/shrinker.h
高,9s:mm/shrinker.c;fs/super.c;fs/f2fs/shrinker.c
高,142s:mm/shrinker.c;include/linux/shrinker.h;mm/shrinker_debug.c
四者均可;优先 fast-context 或 Ace
12
NUMA 页面分配
高,10s:mm/page_alloc.c;mm/mempolicy.c;include/linux/mempolicy.h
中,1s:include/linux/numa_memblks.h;include/linux/numa_memblks.h;include/linux/sched/numa_balancing.h
高,9s:mm/mempolicy.c;mm/percpu.c;mm/numa_emulation.c
中,143s:mm/numa_emulation.c;mm/numa_memblks.c;arch/x86/include/asm/numachip/numachip_csr.h
优先 fast-context 和 Ace;CodeGraph 查具体符号
13
调度器唤醒和入队
高,10s:kernel/sched/core.c;kernel/sched/sched.h;kernel/sched/fair.c
低,0s:include/linux/cpu.h;arch/x86/boot/cpuflags.c;arch/x86/boot/cpuflags.h
中,8s:kernel/sched/rt.c;kernel/sched/stop_task.c;kernel/sched/sched.h
低,140s:kernel/cpu.c;include/linux/cpumask.h;kernel/bpf/cpumask.c
优先 fast-context;已知符号用 CodeGraph 查 try_to_wake_up
14
CPU 热插拔状态
高,9s:kernel/cpu.c;include/linux/cpuhotplug.h
中,1s:include/linux/cpu.h;arch/x86/boot/cpuflags.c;arch/x86/boot/cpuflags.h
高,7s:kernel/cpu.c;kernel/cpu.c;kernel/cpu.c
中,138s:include/linux/cpumask.h;kernel/cpu.c;drivers/base/cpu.c
优先 fast-context 和 Ace
15
系统睡眠和 runtime PM
高,10s:drivers/base/power/main.c;kernel/power/suspend.c;drivers/base/power/common.c
低,1s:net/sched/sch_hfsc.c;include/linux/perf_event.h;arch/x86/include/asm/pgtable_64_types.h
中,7s:drivers/net/wwan/iosm/iosm_ipc_protocol.c;kernel/power/suspend.c;kernel/power/autosleep.c
中,138s:include/linux/pm_runtime.h;drivers/base/power/runtime-test.c;drivers/base/power/runtime.c
优先 fast-context;Ace 和 Semble 可补 runtime PM
16
启动参数解析
高,10s:init/main.c;kernel/params.c
低,1s:无有效摘要
高,9s:init/main.c;init/main.c;arch/x86/kernel/setup.c
低,138s:include/linux/mfd/mc13783.h;include/dt-bindings/clock/intel,lgm-clk.h;lib/crypto/arm/sha512-armv4.pl
优先 fast-context 和 Ace
17
LSM 安全钩子
高,9s:security/security.c;include/linux/lsm_hook_defs.h;security/landlock/fs.c
中,0s:include/linux/lsm_hooks.h;include/uapi/linux/lsm.h;include/linux/lsm_hooks.h
高,8s:security/apparmor/lsm.c;security/safesetid/lsm.c;tools/testing/selftests/bpf/progs/lsm.c
高,138s:security/lsm_init.c;security/lsm.h;kernel/bpf/bpf_lsm.c
优先 fast-context 和 Ace;Semble 可补 LSM 初始化
18
eBPF verifier 检查
高,10s:kernel/bpf/verifier.c;kernel/bpf/states.c
低,3s:kernel/bpf/btf.c;fs/unicode/mkutf8data.c;net/netfilter/nf_conntrack_ftp.c
中,7s:drivers/net/ethernet/netronome/nfp/bpf/verifier.c;tools/testing/selftests/bpf/progs/verifier_linked_scalars.c;kernel/trace/bpf_trace.c
中,139s:include/uapi/linux/bpf.h;kernel/bpf/log.c;kernel/bpf/verifier.c
优先 fast-context;已知函数用 CodeGraph
19
copy_from_user 输入校验
高,10s:include/linux/uaccess.h;include/asm-generic/access_ok.h;kernel/fork.c
高,2s:include/linux/uaccess.h;arch/x86/include/asm/user_32.h;arch/x86/include/asm/user_64.h
高,9s:lib/usercopy.c;lib/strncpy_from_user.c;security/landlock/syscalls.c
中,138s:arch/x86/lib/copy_mc.c;include/linux/instrumented.h;include/linux/uaccess.h
fast-context、Ace、CodeGraph 都可用
20
lockdep 和锁顺序
高,9s:kernel/locking/lockdep.c;kernel/locking/lockdep.h;kernel/workqueue.c
高,1s:include/linux/lockdep_types.h;include/linux/lockdep_types.h;kernel/locking/lockdep_internals.h
中,9s:net/core/sock.c;fs/locks.c;kernel/locking/Makefile
高,137s:include/linux/lockdep.h;kernel/locking/lockdep.c;kernel/locking/lockdep_internals.h
优先 fast-context 和 Semble;CodeGraph 查 lockdep 符号
简要排序
维度 排序 自然语言开发场景准确性fast-context > Ace > Semble > CodeGraph context
查询速度
CodeGraph > Ace ≈ fast-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 位参与者