codereview介绍
1. 定义:
Code review is systematic examination (often known as peer review) of computer source code. It is intended to find and fix mistakes overlooked in the initial development phase, improving both the overall quality of software and the developers' skills. Reviews are done in various forms such as pair programming, informal walkthroughs, and formal inspections。
2. 介绍
Code reviews can often find and remove common vulnerabilities such as format string exploits, race conditions, memory leaks and buffer overflows, thereby improving software security. Online software repositories based on Subversion (with Redmine or Trac), Mercurial, Git or others allow groups of individuals to collaboratively review code. Additionally, specific tools for collaborative code review can facilitate the code review process.
Automated code reviewing software lessens the task of reviewing large chunks of code on the developer by systematically checking source code for known vulnerabilities. A 2012 study by VDC Research reports that 17.6% of the embedded software engineers surveyed currently use automated tools for peer code review and 23.7% expect to use them within 2 years.[2]
Capers Jones' ongoing analysis of over 12,000 software development projects showed that the latent defect discovery rate of formal inspection is in the 60-65% range.[ambiguous] For informal inspection, the figure is less than 50%.[citation needed] The latent defect discovery rate for most forms of testing is about 30%.[3]
Typical code review rates are about 150 lines of code per hour. Inspecting and reviewing more than a few hundred lines of code per hour for critical software (such as safety critical embedded software) may be too fast to find errors.[4][5] Industry data indicates that code reviews can accomplish at most an 85% defect removal rate with an average rate of about 65%.[6]
The types of defects detected in code reviews have also been studied. Based on empirical evidence it seems that up to 75% of code review defects affect software evolvability rather than functionality making code reviews an excellent tool for software companies with long product or system life cycles
3.分类:
Code review practices fall into three main categories: pair programming, formal code review and lightweight code review.[1]
Formal code review, such as a Fagan inspection, involves a careful and detailed process with multiple participants and multiple phases. Formal code reviews are the traditional method of review, in which software developers attend a series of meetings and review code line by line, usually using printed copies of the material. Formal inspections are extremely thorough and have been proven effective at finding defects in the code under review.[citation needed]
Lightweight code review typically requires less overhead than formal code inspections, though it can be equally effective when done properly.[citation needed]Lightweight reviews are often conducted as part of the normal development process:
- Over-the-shoulder – One developer looks over the author's shoulder as the latter walks through the code.
 - Email pass-around – Source code management system emails code to reviewers automatically after checkin is made.
 - Pair Programming – Two authors develop code together at the same workstation, such is common in Extreme Programming.
 - Tool-assisted code review – Authors and reviewers use specialized tools designed for peer code review.
 
Some of these may also be labeled a "Walkthrough" (informal) or "Critique" (fast and informal).
Many teams that eschew traditional, formal code review use one of the above forms of lightweight review as part of their normal development process. A code review case study published in the book Best Kept Secrets of Peer Code Review found that lightweight reviews uncovered as many bugs as formal reviews, but were faster and more cost-effective.
4.常见的code-review tool
开源软件:
- Gerrit, forked from Rietveld.Used by the Android project.
 - Differential, part of the Phabricator suite originally developed by Facebook's Developer Tools team.Used by the LLVM family of projects.
 - Review Board
 - Rietveld, a tool adapted from an internal Google project, Mondrian, for code reviews.
 
比较:
| Software | Maintainer | Development status | License | VCS supported | Platforms supported | Workflow | Cost | 
|---|---|---|---|---|---|---|---|
| Differential (Phabricator) | phabricator.org | actively developed | Apache v2 | Subversion, Git, Mercurial | PHP | pre-commit, post-commit | Free | 
| Gerrit | Shawn Pearce | actively developed | Apache v2 | Git | Java EE | pre-commit | Free | 
| Review Board | reviewboard.org | actively developed | MIT | CVS, Subversion, Git, Mercurial, Bazaar, Perforce, ClearCase, Plastic SCM | Python | mainly pre-commit | Free | 
| Rietveld | Guido van Rossum | actively developed | Apache v2 | Git, Subversion | Python | pre-commit | Free | 
reference:
http://en.wikipedia.org/wiki/Code_review
http://en.wikipedia.org/wiki/List_of_tools_for_code_review
codereview介绍的更多相关文章
- Linux下服务器端开发流程及相关工具介绍(C++)
		
去年刚毕业来公司后,做为新人,发现很多东西都没有文档,各种工具和地址都是口口相传的,而且很多时候都是不知道有哪些工具可以使用,所以当时就想把自己接触到的这些东西记录下来,为后来者提供参考,相当于一个路 ...
 - 关于CodeReview(java)(转)
		
关于codereview,在平时的开发中,经常忽略的环节,参照目前介绍写好代码的几本书和之前掉进的坑,做了一个总结,分享出来. 为什么要做 通过review规避一些代码层面的问题 提升可读性,方便后续 ...
 - java中的codereview
		
 关于codereview,在平时的开发中,经常忽略的环节,参照目前介绍写好代码的几本书和之前掉进的坑,做了一个总结,分享出来. 为什么要做 通过review规避一些代码层面的问题 提升可读性,方 ...
 - Git Review + Gerrit 安装及使用完成 Code-Review
		
转载自:https://cloud.tencent.com/developer/article/1010615 1.Code Review 介绍 Code Review 代码评审是指在软件开发过程中, ...
 - CSS3 background-image背景图片相关介绍
		
这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...
 - MySQL高级知识- MySQL的架构介绍
		
[TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...
 - Windows Server 2012 NIC Teaming介绍及注意事项
		
Windows Server 2012 NIC Teaming介绍及注意事项 转载自:http://www.it165.net/os/html/201303/4799.html Windows Ser ...
 - JavaScript var关键字、变量的状态、异常处理、命名规范等介绍
		
本篇主要介绍var关键字.变量的undefined和null状态.异常处理.命名规范. 目录 1. var 关键字:介绍var关键字的使用. 2. 变量的状态:介绍变量的未定义.已定义未赋值.已定义已 ...
 - HTML DOM 介绍
		
本篇主要介绍DOM内容.DOM 节点.节点属性以及获取HTML元素的方法. 目录 1. 介绍 DOM:介绍DOM,以及对DOM分类和功能的说明. 2. DOM 节点:介绍DOM节点分类和节点层次. 3 ...
 
随机推荐
- 【转】JNI和NDK的区别
			
原文网址:http://blog.csdn.net/ithomer/article/details/6828830 NDK(Native Development Kit)“原生”也就是二进制 andr ...
 - C#百万数据查询超时问题
			
用c#从百万数据中筛选一些信息时,经常会出现程序连接超时的错误,常见的错误很多,例如:Timeout expired. The timeout period elapsed prior to comp ...
 - [转载]DIV CSS设计时IE6、IE7、FF 与兼容性有关的特性
			
在网站设计的时候,应该注意css样式兼容不同浏览器问题,特别是对完全使用DIV CSS设计的网,就应该更注意IE6 IE7 FF对CSS样式的兼容,不然,你的网乱可能出去不想出现的效果! 所有浏览器 ...
 - 不区分大小写匹配字符串,并在不改变被匹配字符串的前提下添加html标签
			
问题描述:最近在搭建一个开源平台网站,在做一个简单搜索的功能,需要将搜索到的结果中被匹配的字符串添加不一样的颜色,但是又不破坏被匹配的字符串. 使用的方法是替换被匹配的字符串加上font标签.但是搜索 ...
 - 获取EntityFrameWork返回的错误和ModelState中的错误
			
都是通过循环才能找到具体的错误信息 具体方法参见这两篇文章: EntityFrameWork: http://www.cnblogs.com/shouzheng/archive/2012/04/19/ ...
 - Linux Vi 删除全部内容,删除某行到结尾,删除某段内容 的方法
			
1.打开文件 vi filename 2.转到文件结尾 G 或转到第9行 9G 3.删除所有内容(先用G转到文件尾) ,使用: :1,.d 或者删除第9行到第200行的内容(先用200G转到第200行 ...
 - linux操作系统cp命令
 - SimpleHttpServer的学习(1)
			
闲来没事,分析一下一个简单的HttpServer github地址: https://github.com/Filirom1/SimpleHTTPServer 实现的功能很简单就是一个FTP服务器 默 ...
 - 【暑假】[深入动态规划]UVa 1628 Pizza Delivery
			
UVa 1628 Pizza Delivery 题目: http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=51189 思路: ...
 - 决策树学习(ID3)
			
参考:<机器学习实战> 优点:计算复杂度不高, 输出结果易于理解,对中间值的缺失不敏感,可以处理不相关特 征数据. 缺点:可能会产生过度匹配问题. 适用数据类型:数值型和标称型. 创建分支 ...