Skip to content

Latest commit

 

History

History
50 lines (44 loc) · 5.17 KB

user_case.md

File metadata and controls

50 lines (44 loc) · 5.17 KB

使用场景

查询代码特征

小开发同学想知道 Repo A 里面使用了哪些 String 型的变量,所以他写了一个 Gödel 如下,交给 CodeFuse-Query 系统给他返回了结果。

// script
use coref::java::*

fn out(var: string) -> bool {
  for(v in Variable(JavaDB::load("coref_java_src.db"))) {
    if (v.getType().getName() = "String" && var = v.getName()) {
      return true
    }
  }
}

fn main() {
  output(out())
}

类似需求:查询:类,函数,变量,返回值,调用图,类继承等等。

代码规则检查器

小 TL 同学发现团队总是写出很多类似的 Bug A,他想针对 Bug A 制定一个代码规则和其检查器,并在 CodeReview 阶段做个卡点。小 TL 通过在 CodeFuse-Query 平台上面编写了一段分析 Query,在平台上面测试符合要求,把这段分析 Query 固化下来作为一个代码规则,并上线到了 CodeReview/CI 阶段。从此这个 Bug 再也没发生过了。 类似需求:编写静态缺陷扫描规则进行代码风险拦截。

获取统计数据

小研究发现传统的代码复杂度指标很难准确地衡量代码的复杂情况,通过学习国际先进经验加上自我灵光一闪,设计了一套复杂度指标和算法。通过 Gödel 实现出来以后,发现不怎么优化就已经性能非常高了,很快就应用到了 10 几种语言,11+万个仓库当中去了。马上就对代码仓库整体的复杂度有了深入的了解。相比较以前需要自己解析代码,分析语法树,对接系统,不知道方便了多少。 类似需求:代码统计,代码度量,算法设计,学术研究。

应用领域

目前,CodeFuse-Query在蚂蚁集团已经支持 CodeFuse大语言模型数据清洗代码度量评估研发风险控制隐私安全分析代码智能、**终端包大小治理 **等多个场景的落地应用,服务月均调用量超过百万。

高质量代码数据清洗 - CodeFuse代码大模型

CodeFuse代码大模型是蚂蚁集团对外开源的处理代码相关问题的模型,对于CodeFuse大语言模型而言,训练的数据质量直接影响模型的推理结果。低质量的代码数据会直接污染语言模型的输出,例如:模型可能会学习到错误的代码模式,从而生成错误的代码;数据中只包含某种编程语言的代码,模型可能无法很好地适应其他编程语言的代码。 为了把控进入模型的代码数据质量,进而提升模型的推理能力。我们基于蚂蚁程序分析团队多年的实践积累结合业界共识,梳理了高质量代码的定义方式,并利用已有程序分析技术实现了自动化、大规模的代码数据清洗。 CodeFuse-Query为CodeFuse代码大模型提供了以下数据清洗能力:

  • 高质量代码数据清洗:对代码数据进行清洗,包括对 Python,Java,JavaScript,TypeScript,Go,C,C++ 7 种语言进行漏洞扫描,对语言种类 / star 数进行筛选,过滤有效代码行数为 0 的数据等。目前已沉淀清洗后的 GitHub 和蚂蚁内部代码数据总共约 2TB
  • 代码画像:实现对大规模代码进行高性能多维度的自动标注,支持 Java, Scala, Kotlin, JavaScript, JSX, TypeScript, TSX, Vue, Python, Go 等 10 种语言,77 种通用标签,40 种蚂蚁特有标签,共 117 种标签。目前自动标注性能能够达到 40MB/s
  • 其他原子能力
    • 高级代码特征提取,包括提取 AST(抽象语法树),DFG(数据流图)数据等。目前 AST 信息已用于 SFT 训练,准确率 97% 左右。
    • 代码片段识别,用于针对文本数据中的代码进行提取,方便进行代码格式化或加上 Markdown 格式:
      • 文本提取代码:从文本中提取代码块信息,支持主流语言的解析,函数及类定义,仅验证二分类问题,就是说仅验证文本是否含有代码块准确率 83% 左右。
      • 识别代码片段的编程语言种类:识别任意代码片段的编程语言种类,支持 30+ 种语言,准确率80%左右。
    • 代码注释对提取:支持提取方法级别的注释-代码对信息,覆盖 15 种 GitHub 最流行的语言,用于 Text To Code/Code To Text 的 SFT 训练。

变更分析-优酷服务端研发效能

优酷质量保障团队从2023年开始针对服务端精准测试的探索,经过半年的技术沉淀和体系搭建,形成了具备变更内容识别、变更影响分析、测试能力推荐、测试覆盖评估的精准测试体系。 在此过程中,CodeFuse-Query能提供的能力主要有:

  • 根据代码变更内容(文件+行号),分析出影响的对象:方法、入口(http入口、hsf入口)、调用链路(从入口到变更方法的所有调用链路)、数据库操作(表、操作类型)
  • 结合线上动态调用链路(方法链路)、CodeFuse-Query静态分析调用链路的影响面精准分析能力,提升变更分析影响面的有效性、准备率

到目前为止,优酷已通过CodeFuse-Query接入所有核心应用,并基于静态分析采集数据,构建了服务端完整的代码知识库和流量知识库。