基于PC-lint Plus的代码静态增量分析插件的设计与实现文献综述

 2023-08-26 06:08

文献综述(或调研报告):

  1. 自动化静态代码分析工具

自动化静态代码分析工具的使用在流行的开源软件系统中并不广泛,并且它们的使用与项目的编程语言密切相关[6]。大量误报和工具生成的输出的可理解性不足是造成自动化静态代码分析工具使用率不足[13]。此外,自动化静态代码分析工具还无法提供足够的信息来简化查找和修复错误的过程。

根据开发过程中使用自动化静态代码分析工具的实际收益来看,自动化静态代码分析工具产生的警告和实际缺陷之间没有直接关系,它们之间的相关程度很弱[7]。自动化静态代码分析工具通常会产生大量的假阳性,因此自动化静态代码分析工具主要用于编码规范的检查,很少用于发现潜在缺陷[10]

关于自动化静态代码分析工具的配置,仅有少数开发人员不依赖默认配置,而是对其进行重新配置。而且,即使是手动配置自动化静态代码分析工具,通常只在软件生命周期发生一次,之后不再重新配置[6]。此外,只有极少数情况的开发人员倾向于记录自动化静态代码分析工具产生的警告的原因与修复方式,多数开发人员不予记录,从而导致自动化静态代码分析工具产生的警告修复难度大,修复效率低下[6]

使用静态代码分析工具是确保软件安全性的有效措施。在软件开发中使用静态代码分析技术需要少量资源,并且可以消除真正的缺陷[2]。但是,选择特定的静态代码分析工具是一个实际问题。不同的静态代码分析工具在弱点识别中没有显示出相同的有效性。

结果差异由静态代码分析工具开发方法的差异解释[2]。开发人员使用各种静态分析方法和不同的规则集进行检查。源代码安全分析器必须包含一组特定的规则测试,以识别软件中的弱点。

静态分析工具可以分为以下三类[2]

  • 用于发现缺陷与漏洞:在开发过程中,是否有意将漏洞内置到源代码中的技术。这是一项安全评估,以确保源代码的质量(源代码安全性分析)。
  • 用于发现是否违反编码准则:其目的是确保代码的质量,不影响软件功能, 属于代码优化,进一步提高代码可靠性、可维护性、多功能性和效率[4]。例如,检查是否符合MISRA C 2008,Sutter-Alexandrescu规则,Meyers-Klaus规则等标准;
  • 用于计算指标:软件度量标准是对某个软件或其规范的某些属性的度量。
  1. PC-lint Plus工具

PC-lint Plus脱胎于C语言的静态代码分析工具lint,通过分析C和C 源代码来发现软件中的缺陷。与编译器一样,PC-lint Plus会解析源代码文件,执行语义分析,并构建一个抽象语法树来表示程序。PC-lint Plus采用各种机制,包括数据流分析、数值跟踪、读写分析、强类型检查、功能语义验证和许多其他技术[1],来提供对单个文件和整个项目强大而全面的分析 [5]。PC-lint工具提供告警抑制的功能,允许开发人员通过抑制选项,抑制不同种类的告警[1]

  • 告警抑制:PC-lint提供大约20种的抑制告警的选项,来满足开发人员对于不同告警的抑制需求。比如使用-emacro(#,name)可以用来屏蔽宏定义中被检查出的告警。
  • 强类型检查:在C 中,可以使用typedef来定义新的数据类型,通过强类型检查的配置,开发人员可以检查来自同一类父类型的子类型的兼容性。比如typedef float Seconds和typedef float Meters,PC-lint可以检查出某一数据是否在Seconds和Meters之间转换,即使Seconds和Meters都来源于父类型float。
  • 数值跟踪:PC-lint提供了数据初始化跟踪,来判断数据在使用前是否被初始化。同时,PC-lint将函数通常解析为树,然后对树进行遍历来进行数值跟踪。此外,PC-lint提供静态数据跟踪,通过完全扫描整个源代码,构建一个变量访问信息调用图,然后注释哪些变量具有什么值。数值追踪技术除了可以用于判断数据的合法性,还可以用来判断函数是否被调用等。
  1. 静态代码分析

静态代码分析,是指在不运行代码的方式下,通过词法分析、语法分析、控制流分析、数据流分析等技术对程序代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术[9]

静态分析的特点是[12]

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

以上是毕业论文文献综述,课题毕业论文、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。