乐于分享
好东西不私藏

别让AI把你的代码注释成废话

别让AI把你的代码注释成废话

点击上方蓝色字体,关注我们

有些注释看起来很多,实际一点用都没有。

比如这种:

cnt++;  // 计数加一

还有这种:

if (voltage < threshold) {  // 如果电压小于阈值    power_off();}

它没有告诉你为什么要加一,也没有告诉你阈值从哪里来,更没有告诉你断电前有没有保存状态、有没有通知上位机、有没有可能误触发。

这种注释不是文档,是噪声。

嵌入式项目里,真正值得注释的地方,往往不是语法表面,而是代码背后的现场约束。

为什么这个 GPIO 初始化顺序不能改?

为什么 RS485 方向脚翻转后要等 20 微秒?

为什么 ADC 采样要避开 PWM 翻转边沿?

为什么这个状态机不能直接从运行态跳回空闲态?

为什么这个错误码不能删除?

这些信息通常不在代码本身里。老工程师知道,新人不知道;当年调过板子的人知道,两年后接手的人不知道;AI 更不知道。

所以我一直觉得,给嵌入式代码自动加注释这件事,不能简单理解成“让 AI 扫一遍代码,把每个函数解释一下”。

那样很容易把项目注释成一堆正确但无用的废话。

真正有价值的做法,是设计一个团队可复用的 Skill,让 AI 按统一规则给用户自己写的代码补关键注释,同时避开开源库、芯片库和自动生成文件。注释要少而准,能解释设计意图、状态机、边界条件和硬件约束。

1

嵌入式代码最缺的不是注释数量

很多项目并不是没有注释,而是注释没有打在关键点上。

我见过不少代码,函数头写得很长,真正危险的逻辑却没有一句说明。

/** * @brief 处理电机状态 */voidMotor_Process(void){    switch (motor_state) {    case MOTOR_STATE_RUN:        if (fault_flags & MOTOR_FAULT_OVERCURRENT) {            motor_state = MOTOR_STATE_STOPPING;        }        break;    }}

这个 @brief 没错,但也没什么价值。

真正需要说明的是:

  • 过流后为什么不是直接进入停止态?
  • STOPPING 状态里是否要保留减速过程?
  • 这个状态切换是否和功率驱动保护时序有关?
  • 中断里会不会同时改 fault_flags?

嵌入式注释的价值,不是把代码翻译成中文,而是把代码看不出来的工程事实补上。

如果团队要批量使用 AI 自动注释,第一条规则就应该写清楚:不要解释语法,要解释意图、边界和风险。

2

自动注释最容易翻车的三个地方

第一个翻车点,是注释范围失控。

AI 如果不加限制,很可能连 CMSIS、HAL、FreeRTOS、第三方协议栈、开源算法库都一起注释。结果仓库里多出一堆无意义改动,代码评审根本看不完。

第二个翻车点,是注释内容太虚。

比如“该函数用于处理数据”“该变量表示状态”“这里进行错误判断”。这些话看似没错,但读代码的人并不需要它。

第三个翻车点,是注释破坏工程节奏。

嵌入式项目经常对行宽、编码、编译宏、静态分析、MISRA、Doxygen 格式有要求。批量注释如果不统一,后面维护起来会很痛苦。

所以这个 Skill 不能只写一句“给代码加注释”。它至少要管住五件事。

要管住什么
具体要求
不管会怎样
注释范围
只处理用户自研代码,排除开源库和生成文件
引入大量无关变更
注释位置
只注释关键变量、函数接口、状态机、边界逻辑
注释膨胀,代码变吵
注释内容
解释意图、约束、风险、单位、并发关系
变成语法翻译
注释格式
函数头、变量、局部逻辑统一模板
团队风格混乱
验证方式
编译、静态检查、差异评审
注释影响代码或掩盖风险

如果这五件事没定义清楚,AI 自动注释很容易从效率工具变成仓库污染源。

3

先分清哪些文件不能碰

嵌入式项目里有很多文件不应该被 AI 批量注释。

比如:

  • 芯片厂商库。
  • RTOS 内核。
  • USB、TCP/IP、文件系统等开源组件。
  • 自动生成的初始化代码。
  • 第三方算法库。
  • 已经受版本控制的协议头文件。
  • 只读导入的客户 SDK。

这些文件不是不能读,而是不要随便改。

Skill 里必须先定义排除规则。

建议在 Skill 里直接写排除目录和文件特征。

类型
常见路径或特征
处理方式
芯片厂商库
Drivers/CMSIS/
Drivers/STM32*_HAL_Driver/SDK/
不修改
RTOS 内核
FreeRTOS/
rt-thread/ThreadX/
不修改
开源组件
lwip/
fatfs/mbedtls/tinyusb/
不修改
自动生成文件
文件中包含 Generated byDO NOT EDIT.ioc 生成痕迹
不修改
第三方协议库
third_party/
external/components/vendor/
不修改
用户自研代码
App/
BSP/User/Src/ 中非生成部分
可分析

这里要注意:BSP/ 不一定都能改。有些板级文件是用户写的,可以注释;有些是工具生成的,只能跳过。Skill 不能死板,要先识别文件来源。

4

不是每一行都值得注释

自动注释最难的地方,是克制。

嵌入式代码里,应该优先注释这些地方:

注释对象
注释重点
示例
全局变量
单位、更新者、并发访问、生命周期
g_adc_mv
 的单位是毫伏,由 ADC 任务更新
状态变量
状态含义、合法迁移、异常回退
电机状态机不能从运行态直接回空闲态
函数参数
输入范围、单位、是否允许为空
timeout_ms
 为毫秒,0 表示不等待
返回值
错误码含义、调用方处理方式
返回负数表示硬件错误,需要重新初始化
中断逻辑
ISR 内只做什么、不做什么
只置位和计数,不解析协议
DMA 缓冲区
读写者、边界、覆盖策略
DMA 写入,任务读取,满时丢弃新帧
状态机分支
分支触发条件和硬件原因
等待驱动电源稳定后再进入运行态
协议兼容
旧版本保留原因
兼容现场旧上位机,不可删除
安全保护
阈值来源、动作顺序
先关 PWM,再断使能,避免桥臂误导通

不建议注释这些地方:

  • 单纯的赋值。
  • 一眼能看懂的条件判断。
  • 标准库调用。
  • 普通循环计数。
  • 与业务无关的临时变量。
  • 已经很清楚的枚举名称。

注释应该增加信息密度,而不是增加文字密度。

5

团队要先统一注释格式

自动注释要能批量用,格式必须统一。

我比较推荐嵌入式 C 项目使用接近 Doxygen 的函数头,同时保持局部注释克制。

函数注释模板可以这样定:

/** * @brief 处理 RS485 接收事件并推进协议解析状态机。 * * @param port 通信端口索引,取值范围为 0 到 COMM_PORT_MAX - 1。 * @param event 接收事件,必须来自串口空闲中断或 DMA 完成回调投递。 * * @return 0 表示处理成功;负数表示端口无效、缓冲区异常或协议状态机错误。 * * @note 本函数运行在通信任务上下文,不能在中断中直接调用。 * @note 只消费环形缓冲区中的完整帧,不负责清空 DMA 原始缓冲区。 */int Comm_ProcessRxEvent(uint8_t port, const CommRxEvent_t *event);

变量注释可以这样定:

/* DMA 写入位置,由串口空闲中断更新;通信任务只读取快照,避免直接改写。 */static volatile uint16_t s_uart3_dma_write_pos;/* 电机保护状态机当前状态,只允许 Motor_Task 在任务上下文推进。 */static MotorProtectState_t s_protect_state;

局部逻辑注释可以这样定:

/* RS485 方向脚释放后需要等待收发器进入接收态,V2.1 板卡实测最小稳定时间约 15us。 */Delay_Us(20);/* 零长度接收通常来自空闲中断重复进入,不能推进写指针,否则会破坏环形缓冲区边界。 */if (rx_len == 0U) {    s_uart3_zero_len_cnt++;    return;}

状态机注释可以这样定:

switch (s_motor_state) {case MOTOR_STATE_STOPPING:    /*     * 先等待 PWM 输出降为 0,再关闭驱动使能。     * 直接跳到 IDLE 会绕过制动释放流程,可能导致功率桥残余电流未泄放。     */    Motor_UpdateStopRamp();    break;}

这样的注释有几个特点:

  • 不重复代码表面含义。
  • 说明上下文和约束。
  • 能被后来的人验证。
  • 不把一句话写成论文。

6

一个团队可用的自动注释 Skill 应该长这样

下面是一个完整的中文 Skill 示例,可以作为团队内部版本的雏形。

---name: embedded-code-commenterdescription: 当用户要求为嵌入式 C 或 C++ 项目自动补充代码注释、统一注释格式、批量生成函数说明、变量说明、状态机说明、参数返回值说明,并且需要排除开源库、芯片库、自动生成文件和第三方代码时,使用本技能。---# 嵌入式代码自动注释## 目标为用户自研的嵌入式代码补充少量、准确、统一、可维护的注释。注释重点是设计意图、硬件约束、状态机规则、并发关系、参数单位、返回值含义和边界条件。不要把代码逐行翻译成中文。## 处理范围优先处理:- `App/`- `User/`- `BSP/` 中用户手写部分- `Src/` 中非自动生成部分- `Inc/` 中用户定义的接口头文件- 项目中特别标记为业务代码、板级代码、驱动适配代码的文件必须跳过:- 芯片厂商库- RTOS 内核- 开源组件- 第三方 SDK- 自动生成文件- 已经明确禁止修改的协议文件- 用户没有授权修改的目录## 排除规则遇到以下路径或特征时,不修改文件:- `CMSIS`- `HAL_Driver`- `FreeRTOS`- `rt-thread`- `lwip`- `fatfs`- `mbedtls`- `tinyusb`- `third_party`- `external`- `vendor`- 文件中包含 `DO NOT EDIT`- 文件中包含 `Generated by`如果文件来源不确定,先只读分析,不直接修改。## 注释原则1. 只给关键代码加注释。2. 不解释一眼能看懂的语句。3. 不写空泛评价,例如“提高稳定性”“保证安全运行”,除非说明具体机制。4. 不改变代码逻辑。5. 不改变量名、函数名、宏名和文件结构。6. 不引入新的头文件。7. 不扩大编译产物。8. 保持原有编码、缩进和行宽风格。9. 注释必须能被代码或工程事实支撑。10. 如果无法判断设计意图,写成待确认注释或不写。## 必须优先注释的对象- 对外接口函数。- 带有硬件时序要求的函数。- 中断服务函数和回调函数。- DMA、环形缓冲区、双缓冲相关逻辑。- 状态机状态和关键迁移条件。- 安全保护、降额、故障恢复逻辑。- 协议兼容分支。- 全局变量、静态变量、跨中断和任务共享的变量。- 带单位的参数和返回值。- 魔法数、阈值、延时值、重试次数。## 函数注释格式使用以下格式:```c/** * @brief 用一句话说明函数职责,避免重复函数名。 * * @param 参数名 说明参数含义、单位、范围、是否允许为空。 * @return 说明返回值含义,特别是错误码和调用方应如何处理。 * * @note 说明调用上下文、硬件约束、并发限制或版本兼容。 */```没有参数时不写 `@param`。没有返回值时不写 `@return`。没有特殊约束时不强行写 `@note`## 变量注释格式全局变量、静态变量和跨上下文共享变量使用行前注释:```c/* 说明变量含义、单位、更新者、读取者和并发约束。 */static volatile uint16_t s_xxx;```局部变量只在含义不明显、单位容易误解或涉及边界条件时注释。## 逻辑注释格式关键分支、状态迁移、硬件延时和异常处理使用块注释:```c/* * 说明为什么需要这段逻辑,以及删掉或改错后会导致什么风险。 */```## 状态机注释要求为状态机补注释时,优先说明:- 当前状态的意义。- 允许从哪些状态进入。- 允许迁移到哪些状态。- 禁止直接跳转的原因。- 与硬件动作或安全保护的关系。## 中断和并发注释要求遇到中断、DMA、任务共享变量时,必须说明:- 哪个上下文写。- 哪个上下文读。- 是否需要 `volatile`- 是否依赖临界区、关中断、互斥锁或原子操作。- 中断里禁止执行的动作。## 输出流程1. 先列出准备处理的文件。2. 再列出跳过的文件和跳过原因。3. 对每个文件先识别关键函数、关键变量和关键状态机。4. 只补必要注释。5. 修改后汇总新增注释类型。6. 提醒用户运行编译、静态检查和代码评审。## 质量检查完成后检查:- 是否误改开源库或生成文件。- 是否出现“该函数用于”“这里判断”“变量赋值”等低价值注释。- 是否重复解释代码表面含义。- 是否漏掉参数单位、返回值错误码、调用上下文。- 是否把不确定的设计意图写成确定事实。- 是否破坏原有格式。

这个 Skill 的关键,不是写得长,而是把自由度控制住。

它告诉 AI:哪些能动,哪些不能动;哪些必须注释,哪些不要注释;注释应该写什么,不能写什么;最后还要检查什么。

这才像一个团队能批量使用的工具。

7

批量使用时,先小范围试跑

我不建议第一次就让 AI 扫完整个仓库。

正确做法是先选一个模块试跑,比如 App/Protocol/ 或 App/Motor/。

建议第一轮只处理 5 到 10 个文件。

评审时重点看:

  • 有没有注释废话。
  • 有没有把不确定的现场原因写死。
  • 有没有漏掉关键参数单位。
  • 有没有误改第三方代码。
  • 有没有让代码更难读。
通过之后,再扩大到整个用户自研目录。

好注释不是给编译器看的,也不是给领导看的。

它是给半年后的自己、刚接手项目的同事、半夜处理现场问题的人看的。

嵌入式代码里,很多真正重要的信息都藏在代码外面:板卡版本、现场波形、硬件余量、客户兼容、故障复现条件、当年踩过的坑。

AI 可以帮我们把这些信息补到代码边上,但前提是我们要给它规则。

这才是 AI Coding 在嵌入式团队里该做的事。

点击阅读原文,更精彩~
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-06 11:01:21 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/718764.html
  2. 运行时间 : 0.092823s [ 吞吐率:10.77req/s ] 内存消耗:4,721.64kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=d9f003567a16899564c1a758a2053697
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000644s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000786s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000292s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000314s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000476s ]
  6. SELECT * FROM `set` [ RunTime:0.000202s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000521s ]
  8. SELECT * FROM `article` WHERE `id` = 718764 LIMIT 1 [ RunTime:0.000465s ]
  9. UPDATE `article` SET `lasttime` = 1780714881 WHERE `id` = 718764 [ RunTime:0.003767s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000234s ]
  11. SELECT * FROM `article` WHERE `id` < 718764 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000485s ]
  12. SELECT * FROM `article` WHERE `id` > 718764 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000401s ]
  13. SELECT * FROM `article` WHERE `id` < 718764 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000805s ]
  14. SELECT * FROM `article` WHERE `id` < 718764 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002053s ]
  15. SELECT * FROM `article` WHERE `id` < 718764 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000693s ]
0.094486s