科学界
代码审查

  软件开发

  核心行动

  过程

  需求

  设计

  工程

  构造

  测试

  调试

  部署

  维护

  范式与模式

  原型设计

  净室

  增量建模

  瀑布模型

  敏捷软件开发

  螺旋模型

  方法论与框架

  快速应用程序开发

  DevOps

  极限编程

  团队软件流程

  个人软件程序

  动态系统开发方法

  MSF

  Scrum

  看板

  V模型

  FDD

  MDD

  迭代式开发

  精实开发

  统一流程

  支持行为

  配置管理

  文档

  质量保证

  项目管理

  用户体验

  实践

  ATDD

  行为驱动开发

  持续集成

  持续交付

  领域驱动设计

  结对编程

  站会

  测试驱动开发

  工具

  编译器

  调试器

  性能分析

  GUI设计器

  建模

  集成开发环境

  组建自动化

  发布自动化

  测试

  标准与知识体系

  能力成熟度模型集成

  IEEE标准

  ISO 9001

  ISO/IEC标准

  SWEBOK

  项目管理知识体系

  BABOK

  查论编

  代码审查是指对计算机源代码系统化地审查,常用软件同行评审的方式进行,其目的是在找出及修正在软件开发初期未发现的错误,提升软件质量及开发者的技术。代码审查常以不同的形式进行,例如结对编程、非正式的看过整个代码,或是正式的软件检查。

  借由代码审查可以找到及移除像是格式化字符串攻击、竞争危害、内存泄漏及缓存溢出等计算机安全隐患,因此提升代码的安全性。基于Subversion(可能是Trac或是Redmine)、Mercurial、Git或其他软件的在线软件库可以允许协同审查代码,而且有些协同代码审查工具可以简化代码审查的过程。

  自动化代码审查软件可以系统化的检查源代码中是否有已知的计算机安全隐患,可以减少大量代码审查的工作。

  卡珀斯·琼斯(Capers Jones)分析了超过12,000个软件开发项目,其中使用正式代码审查的项目,潜在缺陷发现率约在60-65%之间,若是非正式的代码审查,潜在缺陷发现率不到50%。大部分的测试,潜在缺陷发现率会在30%左右。。

  一般的代码审查速度约是一小时150行代码,对于一些关键的软件(例如安全关键系统的嵌入式软件),一小时审查数百行代码的审查速度太快,可能无法找到程序中的问题。代码审查一般可以找到及移除约65%的错误,最高可以到85%。

  也有研究针对代码审查找到的缺陷类型进行分析。代码审查找到的缺陷中,有75%是和计算机安全隐患有关。对于产品生命周期很长的软件公司而言,代码审查是很有效的工具 。

  代码审查一般会分为三类:正式的代码审查、结对编程、以及轻量型的非正式代码审查。

  正式的代码审查(例如范根检查法)有审慎及仔细的流程,由多位参与者分阶段进行。正式的代码审查是传统审查代码的方式,由软件开发者参加一连串的会议,一行一行的审查代码,一般会使用打印好的源代码。正式的代码审查可以彻底的找到程序中的缺陷,但需要投入许多的资源。

  结对编程是两个程序员在一个计算机上共同工作,一个输入程序,另一个工程师审查他或她所输入的程序,结对编程是在极限编程中常见的开发方式。

  轻量型的非正式代码审查需要投入的资源比正式的代码审查要少,一般会是在正常软件开发流程中同时进行,有时也会将结对编程视为轻量型代码审查的一种。

  Email往返:在代码登录后,源代码管理系统自动将代码邮寄给审查者。

  配合辅助工具的代码审查:作者及审查者利用配合代码审查的软件进行审查。

  书籍Best Kept Secrets of Peer Code Review中曾提到有关代码审查的案例研究,这个研究发现轻量型代码审查所找到的缺陷会比正式的代码审查要少,但其速度较快,其成本也较低。

  以往正式的代码审查在审查的准备及进行时都需要投入许多的资源。

  代码分析工具的使用可以协助代码审查。尤其是一些集成在集成开发环境(IDE)下的工具,可以直接提供程序开发者有关编程标准兼容的反馈。

  软件审查

  软件检查

  调试

  软件测试

  静态程序分析

  性能分析

  自动代码审查

  代码审查工具栏表

点击分享到