构建失败别急着清缓存:从依赖图反查可疑变更点
构建失败时不必急于清缓存重跑。先查依赖图和缓存命中记录,锁定上次成功构建后的可疑变更点,可省去全量重编。区分真失效、假失效与传播性失效,从失败节点反查重编集合,利用缓存日志做时间切片,重点排查链接输入变化与ABI不一致。清缓存只是重置而非修复,应作为最后手段。
构建失败时不必急于清缓存重跑。先查依赖图和缓存命中记录,锁定上次成功构建后的可疑变更点,可省去全量重编。区分真失效、假失效与传播性失效,从失败节点反查重编集合,利用缓存日志做时间切片,重点排查链接输入变化与ABI不一致。清缓存只是重置而非修复,应作为最后手段。
长函数导致代码补全工具因上下文窗口限制而截断代码,使模型缺失关键信息,产生类型幻觉、变量遮蔽和控制流断裂三类错误。拆分函数至150行以内、在语义边界处拆分、集中声明类型并显式标注关键变量,可显著提升补全准确率,同时改善代码可维护性。
共享规则文件可强制覆盖个人配置,前提是放对位置、写对字段。Copilot 需在 `.vscode/settings.json` 中分三层关闭行内补全、NES 和 Chat Agents;Cursor 用 `.cursor/rules.json` 按 glob 禁止补全,但规则非硬开关。不同 IDE 配置体系不互通,JetBrains 和 Vim 无法通过仓库文件自动同步,需额外方案。
建立基线快照,通过版本对比将扫描范围收敛到本次变更引入的问题,历史债单独登记、分期消化,不与新增代码混入质量门禁。基线需版本化并随还债动作滚动更新,规则按阻断型与提示型分级,分别用于CI拦截和趋势管理。
权限与脱敏需同步卡住“取数”和“出站”两条线:权限前移到以用户身份访问仓库,限制目录与历史版本;脱敏放在所有内容发往模型前,覆盖密钥、配置、内部接口,并区分硬拦截与软标记。两者通过代理层串成强制链路,辅以审计日志威慑,平衡误伤与绕过成本。
模板字符串和 JSX 属性位置的补全错误,根因是补全引擎缺乏上下文推断能力。作者在 VS Code 和 Neovim 中分别采用配置过滤与 treesitter 节点判断,对错误候选做降权或拦截,并强调过滤优于生成、降权优于完全过滤的实践原则。
前后端 lint 规则难以对齐的根源在于规则源分散,补救式同步只会持续打补丁。可行方案是建立一份工具无关的规则源文件,由生成器派生出 ESLint、RuboCop 等各自的配置,并在 pre-commit 与 CI 中消费生成产物,通过配置漂移检查保证规则变更原子化。对齐的核心是规则意图而非工具行为,需区分全局一致与语言特有规则。pre-commit 只跑暂存文件的快速检查,CI 负责全量权威验证,两者共享同一份生成配置即可避免规则漂移。
AI 代码功能测试易过但静态检查常挂,根源在于模型优化“看起来对”而非工程合规。功能测试覆盖不到安全与规范问题,需将静态检查优先级提升,采用从严规则、专项扫描,并将报错反馈给模型自修。审查者则转向业务逻辑、依赖合理性等工具盲区。
错误码的语义密度远高于堆栈文本,能让 AI 调试助手从“死在哪一行”升级到“为什么死、该怎么查”。关键在于将错误码字典结构化到可查询粒度,通过 MCP 工具按需检索而非塞入 prompt,并关联日志、指标和错误码间转移关系,实现提前定位。错误码体系本身的质量决定调试助手理解能力的上限。
三档质量门禁策略:硬性阻断项(重复率、安全热点、可靠性)零豁免;高成本维护项(新增代码覆盖率、重复率、安全热点)必须清零;可延后项仅作 PR 注释提示。豁免规则强制要求带编号记录,杜绝口头跳过。Actions 接入需配置 PR 集成、限定扫描目录、对齐覆盖率产物路径,并避免重复触发扫描。