提高代码质量方法
读书
模式、trick、“最佳实践”。原则,DRY. 设计模式相关书籍
Separation of concern, least knowledge/assumption
《Code Complete》
《Refactoring》
《Clean Code》
《think in java 》,《effective java》,《设计模式》,《代码大全》
学会模块分割
良好的编码风格
bug管理工具
Refactoring
减少圈复杂度
- SOLID, KISS 和 Golden Path (Early exit)
- RTFM (Read the fxxking manual)
代码风格和规范
Google的代码规范 http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml。
代码质量审查工具
sonarqube
https://segmentfault.com/a/1190000015458921
CppDepend, SonarQube
google: https://github.com/cpplint/cpplint (Pros: 可以检查runtime/explicit, runtime/references,Cons:这是谷歌的规范)我发现用如下命令过滤掉无用文件G:_codescpgf>cpplint --filter=-whitespace,-readability/braces,-build/include_order,-legal/copyright G:_codescpgfsrcgmetaclass.cpp)
PVSStudio: https://www.viva64.com/en/b/0457/
CppCheck: http://cppcheck.sourceforge.net/ 用以检查内存泄漏,错配的内存分配和释放,缓冲区溢出,以及更多的问题。https://metrixplusplus.github.io/home.html (No support python3)
https://github.com/terryyin/lizard
https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis#C,_C++
人工code review
标准化流程
读书,案例sharing meeting
多看开源代码
单元测试
代码质量管控通常需要经历的四个阶段,称之为“四个现代化”
https://zhuanlan.zhihu.com/p/29231125
阶段一:规范化
- 风格规范 - 缩进、换行、大小写等风格问题
- 实践规范 - 规避一些常见的隐患,或者针对特定问题的最佳实践
- 业务规范 - 与业务有关的特殊要求,比如文案中的关键词
阶段二:自动化
自动化是指在代码规范的基础上,使用自动化工具进行质量检查,通常包括:
- 代码规范检查 - 包括风格规范、实践规范、业务规范
- 重复率 - 重复出现的代码区块占比,通常要求在5%以下
- 复杂度 - 总行数,模块大小,循环复杂度等
- 检查覆盖度 - 经过检查的行数占代码库总行数的比例
阶段三:流程化
- 编辑时 - 使用编辑器插件,实时运行质量检查
- 构建时 - 在本地或者开发机的构建脚本中运行质量检查
- 提交时 - 利用Git Hooks,提交代码或者生成Pull Request时运行质量检查
- 发布时 - 在发布脚本中再做一次质量检查,通常与自动化测试放在一起
阶段四:中心化
- 代码规范统一管理。使用Git或者NPM包管理自动化代码质量检查的规则集,自动安装,不在本地写规则。一个团队、一类项目、一套规则。
- 使用统一的持续集成服务。质量检查不通过的项目不能上线。
- 建立代码质量评分制度。让项目与项目之间能够横向对比,项目自身能够纵向对比,并且进行汇总反馈。