代码静态分析¶
代码静态分析是指在不运行应用程序的情况下,对软件的源代码的语义、结构和行为进行分析,由此找出程序中的不规范、不合理的或者可能造成程序运行异常的代码。最为人所熟知的代码静态分析手段就是 “人工代码走查”,随着人工代码审查的日益复杂化和工作量的增加,自动化的代码静态分析技术随之得以迅速发展。时至今日,绝大部分的代码静态分析都已经可以由专业的代码静态分析工具所完成。
解决什么问题¶
编码规范检查。最常用的代码静态分析手段。基于公司自定义的统一编码规范,或者是特定行业通用的编码规范,检查软件代码中不合规的写法,以保证代码的统一风格,尽早预防可能造成软件质量风险的各种不合理代码的出现。编码规则可以规范编码格式、命名规范、内存和资源管理、宏定义、危险代码等软件代码编写的各个方面。
软件质量缺陷检测。更高级和深度的代码静态分析技术。检测软件代码中隐藏的会导致运行时异常或安全性的代码缺陷,如空指针、越界、除零、死锁、安全漏洞等,实现快速查找并及时修复软件错误。对比于编码规范检查,软件质量缺陷检测要求对代码进行更深度的解析和扫描,以定位真正的代码缺陷,除了找出问题点,往往还需要定位相关的代码逻辑路径。有别于编码规范违规代码,软件缺陷检查出的结果不只是可能造成代码质量风险,而是它们本身就是质量问题,所以对于研发团队来说,软件缺陷检查的结果可能在实施代码静态检查工作之初会有更直接、立竿见影的效果。
代码度量分析。针对软件代码的各项度量指标的代码静态分析。如复杂度、嵌套深度、分支结构等多种常见度量维度,以便准确了解和优化代码结构。代码度量检查的思路与 “二八原则” 不谋而合,因为少数的最复杂的代码中隐藏或导致了大部分的 bug, 代码度量正式为了规避或优化这些复杂代码,而从整体结构上提高软件的代码质量和可维护性。
人工代码评审。对代码的算法、逻辑的实现合理与否的检查,这部分由于其与业务需求的密切相关,目前更多还是通过人工代码走读来完成,这也是代码静态分析中最需要人工智慧的部分。