深入浅出静态方法
# 深入浅出静态方法
# 人工静态方法
手段:代码走查、结对编程,同行评审
- 代码走查
- 是由开发人员检查自己的代码,尽可能多地发现各类潜在错误
- 存在问题:个人能力的差异,以及开发人员的“思维惯性”,很多错误并不能在这个阶段被及时发现
- 结对编程
- 敏捷软件开发的方法,一般是由两个开发人员结成对子在一台计算机上共同完成开发任务
- 一个开发人员实现代码,通过被称为“驾驶员”;另一个开发人员审查输入的每一行代码,通常被称为“观察员”
- 应用场景:用于一些非常关键和底层算法的代码实现
- 不足:对人员的利用率比较低
- 同行评审( 使用最普遍 )
- 把代码递交到代码仓库,或者合并代码分支(Branch)到主干(Master)前,需要同技术级别或者更高技术级别的一个或多个同事对代码进行评审,只有通过所有评审后,代码才会被真正递交
- 具体使用:项目使用 GitHub 管理代码,并采用 GitFlow 的分支管理策略,在递交代码或者分支合并时,需要先递交 Pull Request(PR),只有这个 PR 经过了所有评审者的审核,才能被合并
# 自然静态方法
特点:
- 相比于编译器,可以做到对代码更加严格、个性化的检查
- 不真正检测代码的逻辑功能,只是站在代码本身的视角,基于规则,尽可能多地去发现代码错误
- 由于静态分析算法并不实际执行代码,是基于代码的词法分析、语法分析、控制流分析等技术,由于分析技术的局限性以及代码写法的多样性,会存在一定的误报率
基于这些特点,自动静态方法能够以极低的成本发现以下问题:
- 使用未初始化的变量
- 变量在使用前未定义
- 变量声明了但未使用
- 变量类型不匹配
- 部分的内存泄漏问题
- 空指针引用
- 缓冲区溢出
- 数组越界
- 不可达的僵尸代码
- 过高的代码复杂度
- 死循环
- 大量的重复代码块
(完)