《A3--廖斯毅--基于 DeepSeek 的代码质量改进.pdf》由会员分享,可在线阅读,更多相关《A3--廖斯毅--基于 DeepSeek 的代码质量改进.pdf(47页珍藏版)》请在三个皮匠报告上搜索。
1、廖斯毅趣丸科技、平台开发工程师廖斯毅趣丸科技 平台开发工程师趣丸科技平台开发工程师,专注于软件质量以及 DevOps 方向。现负责公司 AI 代码质量相关领域建设,为公司研发效能环节提效。曾从 0 到 1 参与到公司 CICD 平台开发工作,为公司业务快速、稳定交付打下了坚实基础,现聚焦于 AI 代码质量相关方向。目录CONTENTS软件工程代码质量0102LLM 赋能 CodeReview构建 Review Agent03未来展望04PART 01软件工程中的代码质量DeepSeek 的优势安全私有化部署确保代码安全开源开放权重可自定义微调经济无需按 token 计费能力V3 搭配 R1 效
2、果好PART 02大模型赋能 CodeReviewCodeReview 的双面性价值挑战保障代码质量减少技术债知识共享保持一致性提前发现问题时间成本标准不一遗漏问题流程管理工具限制LLM 赋能多种角色快速了解变更范围帮助梳理代码逻辑分组审查人员获得修改建议预防技术债务开发人员明确测试回归点测试人员LLM+MergeRequest 赋能 CodeReview基于 Gitlab MR 的功能,完成增量代码的分析、总结。效果-MR 总结总结与梳理:按变更类型总结按变更类型梳理效果-MR 代码建议侧重于代码质量:代码风格最佳实践可维护性可读性效果-MR Issue 分析侧重于分析问题:逻辑正确性检查性
3、能问题安全问题拼写错误LLM 分析 MR 遇到的问题和挑战如何传递代码变更代码变更需要通过Prompt 提供给大模型进行分析。如何让模型理解代码变更:哪些是旧代码?哪些是新代码?缺失代码上下文在 Review 中除了查看变更代码之外,还需要其他未变更的关联代码进行分析。如何准确、有效提供关联代码?如何准确分析问题LLM 是一个概率模型,那么生成的内容就不是 100%可靠的。应该如何提升代码分析场景中的准确率是关键。010302如何让模型理解代码变更自定义格式如何找到正确的格式如何找到正确的格式Prompt+EngineeringPrompt 可以和 Code 一样编写测试真正的 Prompt
4、Engineering缺失代码上下文的问题Unified diff 生成内容基于固定行号,容易丢失代码上下文。导致模型分析给出错误建议。错误建议变更内容Tree-sitter 是支持多语言的静态分析工具,可以将源代码解析为一个语法树。通过 tree-sitter 召回代码上下文Prompt 困局Few-shot、CoT、ToT、GoTPrompt 套路并没有提升效果,如何是好?正解=扎实的领域知识+理性思维Supervisord CoTRef:https:/arxiv.org/abs/2410.14198如何推导出有效的 Supervisord CoT?-准确识别需要哪些步骤-明确说明每个步骤
5、需要输出什么-通过bullet point 鼓励模型思考代码分析中使用 Supervisord CoTPrompt 的核心目标LLM 问题空间Prompt 约束空间术:x-shot、x-CoT、道:收敛问题空间核心:找到问题域与 LLM 数据集的交集,收敛 LLM 的解题空间,尽可能逼近目标答案。PART 03基于 IDE 的 Review Agent为什么要基于 IDEMR 阶段反馈滞后环境有完整代码有丰富的工具可用IDE 修改问题直接IDE 插件展示Review Agent 流程Workflow+Agent 的方式构建整个应用。Workflow 做预处理和后处理,是一套预定的流程。Agen
6、t:LLM tool use+ReAct通过构建一套 flow,来解决复杂的问题。建议:-保持 Node KISS 原则-任务太难就拆分多个 Node-不要纠结单个 Node 的效果核心思想:为模型提供优质 ContextFlow EngineeringRef:https:/ 分析代码场景下,模型缺失的是关联的代码。提供关联代码需要的工具:-了解项目结构、代码关系-Glob-Read_File_Outline-获取代码-Read_File-Fetch_Code_By_Symb