《代码审查流程与要点.ppt》由会员分享,可在线阅读,更多相关《代码审查流程与要点.ppt(22页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、ccooppyyrriigghhtt22000055lleeaaddoorr代码审查流程与要点生产平台组生产平台组2016-1-232016-1-23立得空间信息技术股份有限公司立得空间信息技术股份有限公司1ccooppyyrriigghhtt22000055lleeaaddoorr目录1.1.1.1.概述概述概述概述2.2.2.2.代码审查的目的代码审查的目的代码审查的目的代码审查的目的3.3.3.3.代码审查的好处代码审查的好处代码审查的好处代码审查的好处4.4.4.4.代码审查的局限性代码审查的局限性代码审查的局限性代码审查的局限性5.5.5.5.代码审查内容代码审查内容代码审查内容代码
2、审查内容6.6.6.6.代码审查流程代码审查流程代码审查流程代码审查流程7.7.7.7.代码审查工具代码审查工具代码审查工具代码审查工具ccooppyyrriigghhtt22000055lleeaaddoorr1.概述 Code Review Code Review代码审查是指软件开发过程中,通过对代码审查是指软件开发过程中,通过对代码审查是指软件开发过程中,通过对代码审查是指软件开发过程中,通过对源代码进行系统性检查的过程。通常的目的是查找各种缺源代码进行系统性检查的过程。通常的目的是查找各种缺源代码进行系统性检查的过程。通常的目的是查找各种缺源代码进行系统性检查的过程。通常的目的是查找各
3、种缺陷,包括代码缺陷、功能实现问题、编码合理性、性能优陷,包括代码缺陷、功能实现问题、编码合理性、性能优陷,包括代码缺陷、功能实现问题、编码合理性、性能优陷,包括代码缺陷、功能实现问题、编码合理性、性能优化等;保证软件总体质量和提高开发者自身水平。化等;保证软件总体质量和提高开发者自身水平。化等;保证软件总体质量和提高开发者自身水平。化等;保证软件总体质量和提高开发者自身水平。ccooppyyrriigghhtt22000055lleeaaddoorr2.代码审查的目的u u检查检查检查检查开发人员开发人员开发人员开发人员是否遵守开发规范中的规定是否遵守开发规范中的规定是否遵守开发规范中的规定
4、是否遵守开发规范中的规定u u检查代码是否存在审定检查代码是否存在审定检查代码是否存在审定检查代码是否存在审定表中的错误表中的错误表中的错误表中的错误u u检查代码是否存在逻辑检查代码是否存在逻辑检查代码是否存在逻辑检查代码是否存在逻辑错误、性能低下或安全问题错误、性能低下或安全问题错误、性能低下或安全问题错误、性能低下或安全问题ccooppyyrriigghhtt22000055lleeaaddoorr3.代码审查的好处u u提高提高提高提高代码质量代码质量代码质量代码质量u u及早及早及早及早发现潜在缺陷,降低修改发现潜在缺陷,降低修改发现潜在缺陷,降低修改发现潜在缺陷,降低修改/弥补缺陷
5、的成本弥补缺陷的成本弥补缺陷的成本弥补缺陷的成本u u促进促进促进促进团队内部知识共享,提高团队的整体水平团队内部知识共享,提高团队的整体水平团队内部知识共享,提高团队的整体水平团队内部知识共享,提高团队的整体水平u u评审评审评审评审过程对于评审人员来说,也是一种思路重构的过程,帮助更多的过程对于评审人员来说,也是一种思路重构的过程,帮助更多的过程对于评审人员来说,也是一种思路重构的过程,帮助更多的过程对于评审人员来说,也是一种思路重构的过程,帮助更多的人理解系统人理解系统人理解系统人理解系统u u是是是是一种传递知识的手段,可以让其它并不熟悉代码的人知道作者的意一种传递知识的手段,可以让其
6、它并不熟悉代码的人知道作者的意一种传递知识的手段,可以让其它并不熟悉代码的人知道作者的意一种传递知识的手段,可以让其它并不熟悉代码的人知道作者的意图和想法,从而可以在以后轻松维护代码图和想法,从而可以在以后轻松维护代码图和想法,从而可以在以后轻松维护代码图和想法,从而可以在以后轻松维护代码u u鼓励鼓励鼓励鼓励程序员们相互学习对方的长处和有点程序员们相互学习对方的长处和有点程序员们相互学习对方的长处和有点程序员们相互学习对方的长处和有点u u可以可以可以可以被用来确认设计和实现是否合理,检查设计是否清楚和简单被用来确认设计和实现是否合理,检查设计是否清楚和简单被用来确认设计和实现是否合理,检查
7、设计是否清楚和简单被用来确认设计和实现是否合理,检查设计是否清楚和简单ccooppyyrriigghhtt22000055lleeaaddoorr4.代码审查的局限u u无法无法无法无法完全验证逻辑是否正确,无法检查功能是否完整;完全验证逻辑是否正确,无法检查功能是否完整;完全验证逻辑是否正确,无法检查功能是否完整;完全验证逻辑是否正确,无法检查功能是否完整;u u无法无法无法无法检测代码中遗漏的路径和数据敏感性错误检测代码中遗漏的路径和数据敏感性错误检测代码中遗漏的路径和数据敏感性错误检测代码中遗漏的路径和数据敏感性错误u u不不不不验证规格的正确性验证规格的正确性验证规格的正确性验证规格的
8、正确性u u代价高昂,对于代价高昂,对于代价高昂,对于代价高昂,对于以上局限,需要编写正确的详尽的测试用以上局限,需要编写正确的详尽的测试用以上局限,需要编写正确的详尽的测试用以上局限,需要编写正确的详尽的测试用例,进行功能测试和集成测试来弥补。例,进行功能测试和集成测试来弥补。例,进行功能测试和集成测试来弥补。例,进行功能测试和集成测试来弥补。ccooppyyrriigghhtt22000055lleeaaddoorr5.审查内容u u基本规范:检查代码编写是否满足编码规范;基本规范:检查代码编写是否满足编码规范;基本规范:检查代码编写是否满足编码规范;基本规范:检查代码编写是否满足编码规范
9、;u u程序逻辑:检查基本的程序逻辑、性能、安全性等是否程序逻辑:检查基本的程序逻辑、性能、安全性等是否程序逻辑:检查基本的程序逻辑、性能、安全性等是否程序逻辑:检查基本的程序逻辑、性能、安全性等是否存在问题,用户交互流程是否满足正常的软件使用要求;存在问题,用户交互流程是否满足正常的软件使用要求;存在问题,用户交互流程是否满足正常的软件使用要求;存在问题,用户交互流程是否满足正常的软件使用要求;u u软件设计:检查软件的基础设计、模块之间的耦合关系、软件设计:检查软件的基础设计、模块之间的耦合关系、软件设计:检查软件的基础设计、模块之间的耦合关系、软件设计:检查软件的基础设计、模块之间的耦合
10、关系、第三方库或框架的使用是否合理。第三方库或框架的使用是否合理。第三方库或框架的使用是否合理。第三方库或框架的使用是否合理。代码审查分代码审查分3 3个等级:个等级:ccooppyyrriigghhtt22000055lleeaaddoorr5.1基本规范 项目在立项时需确定本项目所遵循的编码规范,如有特项目在立项时需确定本项目所遵循的编码规范,如有特项目在立项时需确定本项目所遵循的编码规范,如有特项目在立项时需确定本项目所遵循的编码规范,如有特殊要求,可在通用编码规范基础上进行适当修改。纯殊要求,可在通用编码规范基础上进行适当修改。纯殊要求,可在通用编码规范基础上进行适当修改。纯殊要求,可
11、在通用编码规范基础上进行适当修改。纯C+/VC+C+/VC+开发项目应遵守开发项目应遵守开发项目应遵守开发项目应遵守C+C+编码规范编码规范编码规范编码规范,C#C#开发项目开发项目开发项目开发项目应遵守应遵守应遵守应遵守C#C#编码规范编码规范编码规范编码规范,混合开发项目应遵守两种编码规范。,混合开发项目应遵守两种编码规范。,混合开发项目应遵守两种编码规范。,混合开发项目应遵守两种编码规范。ccooppyyrriigghhtt22000055lleeaaddoorr5.1基本规范:案例11.1.成员变量命名不规范;成员变量命名不规范;成员变量命名不规范;成员变量命名不规范;2.2.成员变量
12、访问权限申明方式不一致;成员变量访问权限申明方式不一致;成员变量访问权限申明方式不一致;成员变量访问权限申明方式不一致;3.3.代码之间的空行不符合规范;代码之间的空行不符合规范;代码之间的空行不符合规范;代码之间的空行不符合规范;4.4.部分成员变量只有申明,没有初始化;部分成员变量只有申明,没有初始化;部分成员变量只有申明,没有初始化;部分成员变量只有申明,没有初始化;5.5.没有注释没有注释没有注释没有注释ccooppyyrriigghhtt22000055lleeaaddoorr5.1基本规范:案例21.1.一个代码文件中包含多个类;一个代码文件中包含多个类;一个代码文件中包含多个类;
13、一个代码文件中包含多个类;2.2.一个代码文件中代码过长;一个代码文件中代码过长;一个代码文件中代码过长;一个代码文件中代码过长;3.3.有的类中成员变量有初始值,有的没有;有的类中成员变量有初始值,有的没有;有的类中成员变量有初始值,有的没有;有的类中成员变量有初始值,有的没有;4.4.有的类有注释,有的类有注释,有的类有注释,有的类有注释,有的没有。有的没有。有的没有。有的没有。ccooppyyrriigghhtt22000055lleeaaddoorr5.2程序逻辑 程序逻辑检查软件基本的程序逻辑是否合理,包括循程序逻辑检查软件基本的程序逻辑是否合理,包括循程序逻辑检查软件基本的程序逻辑
14、是否合理,包括循程序逻辑检查软件基本的程序逻辑是否合理,包括循环、递归、线程、事务等代码结构上的合理性。还包括异环、递归、线程、事务等代码结构上的合理性。还包括异环、递归、线程、事务等代码结构上的合理性。还包括异环、递归、线程、事务等代码结构上的合理性。还包括异常处理、性能、重复代码、可优化代码,无效代码等的检常处理、性能、重复代码、可优化代码,无效代码等的检常处理、性能、重复代码、可优化代码,无效代码等的检常处理、性能、重复代码、可优化代码,无效代码等的检查。在代码程度上检查用户界面操作逻辑是否正确、布局查。在代码程度上检查用户界面操作逻辑是否正确、布局查。在代码程度上检查用户界面操作逻辑是
15、否正确、布局查。在代码程度上检查用户界面操作逻辑是否正确、布局是否合理、用户提示是否简捷明了、是否存在重复或无用是否合理、用户提示是否简捷明了、是否存在重复或无用是否合理、用户提示是否简捷明了、是否存在重复或无用是否合理、用户提示是否简捷明了、是否存在重复或无用功能等。功能等。功能等。功能等。ccooppyyrriigghhtt22000055lleeaaddoorr5.2程序逻辑:案例11.1.异常淹没:异常捕获后没有进行任何处理,也没有将异常抛出。异常淹没:异常捕获后没有进行任何处理,也没有将异常抛出。异常淹没:异常捕获后没有进行任何处理,也没有将异常抛出。异常淹没:异常捕获后没有进行任何
16、处理,也没有将异常抛出。ccooppyyrriigghhtt22000055lleeaaddoorr5.2程序逻辑:案例21.1.提示框不符合要求:没有标题,没有显示图标(提示、警告、借误等)。提示框不符合要求:没有标题,没有显示图标(提示、警告、借误等)。提示框不符合要求:没有标题,没有显示图标(提示、警告、借误等)。提示框不符合要求:没有标题,没有显示图标(提示、警告、借误等)。2.2.提示表意不清,应明确显示是什么结点没有选中,而且结点是程序语言,要提示表意不清,应明确显示是什么结点没有选中,而且结点是程序语言,要提示表意不清,应明确显示是什么结点没有选中,而且结点是程序语言,要提示表意
17、不清,应明确显示是什么结点没有选中,而且结点是程序语言,要翻译成用户语言,如:未选中兵要,请先选择一个兵要!。翻译成用户语言,如:未选中兵要,请先选择一个兵要!。翻译成用户语言,如:未选中兵要,请先选择一个兵要!。翻译成用户语言,如:未选中兵要,请先选择一个兵要!。ccooppyyrriigghhtt22000055lleeaaddoorr5.3软件设计 软件设计检查软件的层次结构划分是否合理,软件设计检查软件的层次结构划分是否合理,软件设计检查软件的层次结构划分是否合理,软件设计检查软件的层次结构划分是否合理,UIUI层、层、层、层、逻辑层、数据层、组件层等是否清晰,有无混淆;软件在逻辑层、
18、数据层、组件层等是否清晰,有无混淆;软件在逻辑层、数据层、组件层等是否清晰,有无混淆;软件在逻辑层、数据层、组件层等是否清晰,有无混淆;软件在性能设计、安全性设计、易维护性设计、健壮性设计等设性能设计、安全性设计、易维护性设计、健壮性设计等设性能设计、安全性设计、易维护性设计、健壮性设计等设性能设计、安全性设计、易维护性设计、健壮性设计等设计方面是否合理。计方面是否合理。计方面是否合理。计方面是否合理。ccooppyyrriigghhtt22000055lleeaaddoorr5.3软件设计:案例11.1.工程命名有问题:该项目没有引入插件框架,工程命名有问题:该项目没有引入插件框架,工程命名
19、有问题:该项目没有引入插件框架,工程命名有问题:该项目没有引入插件框架,这个工程是从其他项目拷贝而来,但是工程名这个工程是从其他项目拷贝而来,但是工程名这个工程是从其他项目拷贝而来,但是工程名这个工程是从其他项目拷贝而来,但是工程名称没有修改正确;称没有修改正确;称没有修改正确;称没有修改正确;2.2.都是都是都是都是ArcGISArcGIS工具类,但是分散在工具类,但是分散在工具类,但是分散在工具类,但是分散在2 2个工程中,个工程中,个工程中,个工程中,应该把第应该把第应该把第应该把第2 2个工程中的工具类移到第个工程中的工具类移到第个工程中的工具类移到第个工程中的工具类移到第1 1个工程
20、中。个工程中。个工程中。个工程中。ccooppyyrriigghhtt22000055lleeaaddoorr6.代码审查流程立项阶段编写代码审查计划书建立代码审查缺陷库确定编码规范研制阶段提交代码审查申请单代码审查入口检查实施代码审查输出代码审查报告存在缺陷是代码整改否归档结项阶段编写代码审查总结报告存档ccooppyyrriigghhtt22000055lleeaaddoorr6.1立项阶段1.1.编写代码审查计划书:编写代码审查计划书:编写代码审查计划书:编写代码审查计划书:描述项目或产品在研制过程中进描述项目或产品在研制过程中进描述项目或产品在研制过程中进描述项目或产品在研制过程中进行
21、代码审查活动的时间与周期,明确项目开发负责人、行代码审查活动的时间与周期,明确项目开发负责人、行代码审查活动的时间与周期,明确项目开发负责人、行代码审查活动的时间与周期,明确项目开发负责人、代码审查负责人;代码审查负责人;代码审查负责人;代码审查负责人;2.2.建立代码审查缺陷库:在项目或产品研制开始前开发负建立代码审查缺陷库:在项目或产品研制开始前开发负建立代码审查缺陷库:在项目或产品研制开始前开发负建立代码审查缺陷库:在项目或产品研制开始前开发负责人按照部门代码审查缺陷库模板责人按照部门代码审查缺陷库模板责人按照部门代码审查缺陷库模板责人按照部门代码审查缺陷库模板建立代码审查缺陷建立代码审
22、查缺陷建立代码审查缺陷建立代码审查缺陷库,库,库,库,建立所有开发人员和审查人员的权限;建立所有开发人员和审查人员的权限;建立所有开发人员和审查人员的权限;建立所有开发人员和审查人员的权限;3.3.确定编码规范:开发负责人确定本项目或产品研制需遵确定编码规范:开发负责人确定本项目或产品研制需遵确定编码规范:开发负责人确定本项目或产品研制需遵确定编码规范:开发负责人确定本项目或产品研制需遵循的编码规范,并上传至代码审查缺陷库中。循的编码规范,并上传至代码审查缺陷库中。循的编码规范,并上传至代码审查缺陷库中。循的编码规范,并上传至代码审查缺陷库中。ccooppyyrriigghhtt2200005
23、5lleeaaddoorr6.2研制阶段1.1.提交代码审查申请单:到达项目提交代码审查申请单:到达项目提交代码审查申请单:到达项目提交代码审查申请单:到达项目/产品代码审查时间节点产品代码审查时间节点产品代码审查时间节点产品代码审查时间节点时,开发负责人确定代码基线,提交代码审查申请单给时,开发负责人确定代码基线,提交代码审查申请单给时,开发负责人确定代码基线,提交代码审查申请单给时,开发负责人确定代码基线,提交代码审查申请单给代码审查负责人;代码审查负责人;代码审查负责人;代码审查负责人;2.2.代码审查入品检查:代码审查负责人检查代码库中的代代码审查入品检查:代码审查负责人检查代码库中的
24、代代码审查入品检查:代码审查负责人检查代码库中的代代码审查入品检查:代码审查负责人检查代码库中的代码基线是否满足代码审查条件,如不满足,退回至开发码基线是否满足代码审查条件,如不满足,退回至开发码基线是否满足代码审查条件,如不满足,退回至开发码基线是否满足代码审查条件,如不满足,退回至开发负责人;负责人;负责人;负责人;3.3.实施代码审查:审查负责人分配代码审查任务给审查人实施代码审查:审查负责人分配代码审查任务给审查人实施代码审查:审查负责人分配代码审查任务给审查人实施代码审查:审查负责人分配代码审查任务给审查人员,审查人员利用工具或手动按照编码规范与经验对代员,审查人员利用工具或手动按照
25、编码规范与经验对代员,审查人员利用工具或手动按照编码规范与经验对代员,审查人员利用工具或手动按照编码规范与经验对代码进行审查。码进行审查。码进行审查。码进行审查。ccooppyyrriigghhtt22000055lleeaaddoorr6.2研制阶段4.4.输出代码审查报告:代码审查完成后,审查负责人编写输出代码审查报告:代码审查完成后,审查负责人编写输出代码审查报告:代码审查完成后,审查负责人编写输出代码审查报告:代码审查完成后,审查负责人编写代码审查报告至开发负责人;代码审查报告至开发负责人;代码审查报告至开发负责人;代码审查报告至开发负责人;5.5.代码整改:代码整改:代码整改:代码整
26、改:代码审查报告代码审查报告代码审查报告代码审查报告中如果存在不符合项,开中如果存在不符合项,开中如果存在不符合项,开中如果存在不符合项,开发负责人按照不符合项分配代码整改任务;整改完成后发负责人按照不符合项分配代码整改任务;整改完成后发负责人按照不符合项分配代码整改任务;整改完成后发负责人按照不符合项分配代码整改任务;整改完成后重复重复重复重复1515过程。过程。过程。过程。ccooppyyrriigghhtt22000055lleeaaddoorr6.3结项阶段1.1.项目结项时,代码审查负责人编写项目结项时,代码审查负责人编写项目结项时,代码审查负责人编写项目结项时,代码审查负责人编写代
27、码审查总结报告代码审查总结报告代码审查总结报告代码审查总结报告并向部门作总结报告,帮助部门整理该项目研制过程并向部门作总结报告,帮助部门整理该项目研制过程并向部门作总结报告,帮助部门整理该项目研制过程并向部门作总结报告,帮助部门整理该项目研制过程中出现的代码质量问题,其他项目组应以此为鉴,杜绝中出现的代码质量问题,其他项目组应以此为鉴,杜绝中出现的代码质量问题,其他项目组应以此为鉴,杜绝中出现的代码质量问题,其他项目组应以此为鉴,杜绝出现类似问题。出现类似问题。出现类似问题。出现类似问题。ccooppyyrriigghhtt22000055lleeaaddoorr7.代码审查工具1.SourceAnalysis 1.SourceAnalysis(StyleCopStyleCop):代码自动化检查工具,检):代码自动化检查工具,检):代码自动化检查工具,检):代码自动化检查工具,检查代码是否按照制定的编辑规则进行编码,可与查代码是否按照制定的编辑规则进行编码,可与查代码是否按照制定的编辑规则进行编码,可与查代码是否按照制定的编辑规则进行编码,可与Visual Visual StudioStudio集成。集成。集成。集成。ccooppyyrriigghhtt22000055lleeaaddoorr谢谢!
限制150内