中文

学习自然编码规范

软件工程 2016-11-09 v3

摘要

每位程序员都有独特的风格,范围涵盖从标识符命名偏好到对象关系和设计模式的偏好。编码规范定义了一致的语法风格,从而促进可读性并进而提升可维护性。在协作开发时,程序员努力遵守项目的编码规范。然而,三分之一的变更审查包含关于编码规范的反馈,这表明程序员并非总是遵循这些规范,且项目成员非常在意规范的遵守情况。不幸的是,程序员往往不了解编码规范,因为推断这些规范需要全局视角,即汇总程序员做出的众多局部决策并识别 emergent consensus(涌现的共识)风格。我们提出了 NATURALIZE,这是一个学习代码库风格并建议修订以提高风格一致性的框架。NATURALIZE 建立在将统计自然语言处理应用于源代码的最新工作基础之上。我们应用 NATURALIZE 来建议自然的标识符名称和格式化规范。我们展示了四种专注于在开发和发布管理(包括代码审查)期间确保自然代码的工具。NATURALIZE 在其标识符名称的顶级建议中达到了 94% 的准确率,甚至能够利用包含 10,968 个开源项目的语料库,在不同项目间迁移关于规范的知识。我们使用 NATURALIZE 为 5 个开源项目生成了 18 个补丁,其中 14 个被接受。

关键词

引用

@article{arxiv.1402.4182,
  title  = {Learning Natural Coding Conventions},
  author = {Miltiadis Allamanis and Earl T. Barr and Christian Bird and Charles Sutton},
  journal= {arXiv preprint arXiv:1402.4182},
  year   = {2016}
}