研究想法

代码优化与生成式测试的可执行控制

日 · 2026-07-22 · Software Intelligence

通过结合互补的可执行信号,性能优化和测试生成工作流可以提高模型输出的可靠性:使用运行时性能分析来优先处理静态优化匹配,使用语义变异来检验验收测试,并在行为级验证之前采用确定性的项目脚手架。

3 个想法

按性能分析器结果为静态优化匹配排序

性能工程师可以在整个代码仓库中运行 MoST 风格的已验证 Semgrep 规则,然后根据采样性能分析器报告的运行时占比和调用上下文对匹配结果排序。MoST 提供了可跨语言和架构复用的候选转换,但静态匹配无法表明某个位置是否对已部署工作负载重要;PerfAgent 表明,性能分析器反馈可以帮助代理跨越抽象层,并更频繁地达到接近专家水平的加速效果。具体做法是只向编码代理提供影响最大的规则匹配,对每个正确补丁重新进行性能分析,并保留最快的结果,而不是最后提交的结果。一项低成本检查是,在相同的优化任务上比较按性能分析器排序和未排序的规则匹配,衡量每次尝试编辑带来的成功加速效果以及验证成本。

通过变异强化性能补丁的验收测试

在认定最快的候选补丁正确之前,接受代理生成优化的维护者应使用合理但错误的性能补丁来检验受影响的测试集。PerfAgent 能够高效地选出通过定向测试的最快补丁,但其失败分析指出,测试范围过窄可能遗漏边界情况。CoHarden 说明了通过测试并不意味着测试具有足够的区分能力:严格的复现测试使修复成功率提高了 8.5 个百分点,宽松测试没有带来提升,而错位测试使其下降了 3.6 个百分点。优化循环可以生成语义变异体,例如删除边界检查、修改回退路径或不安全地复用缓存,然后扩展选择性测试集,直到其能够拒绝这些变异体。对之前接受的补丁分别在启用和不启用这种强化的情况下重新运行,可以揭示额外的变异步骤是否能捕获基于依赖关系的选择性测试所遗漏的回归问题。

对生成式 BDD 胶水代码进行编译与变异检查

维护 Java BDD 测试套件的团队可以将胶水代码验收分为三个关卡:确定性的框架脚手架、编译与静态修复,以及基于变异的行为检查。AutoGlue 会检索场景和代码仓库上下文,但其生成的实现中只有 46.1% 可以直接使用,而且执行验证受到步骤级预言机薄弱的限制。CATGen 表明,固定的骨架和静态分析修复可以低成本地消除许多项目集成失败;CoHarden 则表明,可执行测试仍可能接受看似合理但错误的实现。对于每个生成的步骤定义,流水线都应修改 API 调用、参数或被省略的操作,并要求外层场景拒绝这些变体。首次评估可以将编译率、直接可用率和存活变异体数量与 AutoGlue 当前的生成工作流进行比较。