静态分析方法、装置和设备及计算机可读存储介质与流程

文档序号:37778479发布日期:2024-04-25 11:05阅读:55来源:国知局
静态分析方法、装置和设备及计算机可读存储介质与流程

本技术涉及计算机,更具体地,涉及一种软件检测技术中的静态分析方法、装置和设备及计算机可读存储介质。


背景技术:

1、静态分析技术是一种在不执行程序的情况下对软件程序代码进行分析的技术。静态分析技术的关键功能是检查软件的表示和描述是否一致,是否存在冲突或歧义。作为白盒测试的一种,静态分析技术在软件程序代码的质量测试中起着重要作用。

2、然而,随着企业级软件(例如,存储软件)和云软件的快速发展,如今的软件产品呈现出规模更大、结构更复杂的趋势。然而,现有静态分析技术的局限性逐渐显露出来。以存储场景为例,一个存储系统可以包括多个子系统,其中,单个子系统的源代码规??筛叽?00万行。在现有静态分析技术中,通常以逐行扫描代码的方式执行分析。因此,在整个分析过程中,分析处理效率较低。因此,如何提供一种高效的静态分析方法成为亟待解决的技术问题。


技术实现思路

1、本技术提供了一种静态分析方法、装置和设备及计算机可读存储介质,以提高静态分析效率。

2、根据第一方面,提供了一种静态分析方法。所述方法可以通过静态分析工具(例如,静态分析软件)来执行,也可以通过安装有所述静态分析工具的设备来执行。本技术对此不作限制。所述方法包括:接收第一请求,其中,所述第一请求用于对第一对象执行问题分析;对与所述第一对象相关联的编译单元(translation?unit,tu)执行问题分析,以在完成所述分析后生成所述第一对象的问题分析结果;发送所述问题分析结果。所述第一对象包括至少一个源文件。

3、基于上述方案,在本技术提供的静态分析方法中,在对所述第一对象进行问题分析期间,所述第一对象的所述源文件与所述tu相关联,所述tu可以包括所述至少一个源文件。在具体问题分析期间,以所述tu为粒度,不需要生成所述第一对象中包括的所有函数的调用关系图,可以同时选择多个tu进行并行处理,以提高静态分析效率。

4、在一种可能的实现方式中,扫描所述第一对象的所述源文件,生成tu队列。所述tu队列包括n个tu,n是大于或等于1的整数,所述tu队列中的每个tu与至少一个源文件中的至少一个函数相关联。具体地,基于所述tu队列对与所述tu队列中的所述n个tu相关联的函数执行问题分析,以生成所述第一对象的所述问题分析结果。

5、基于上述方案,所述tu队列中的所述tu可以与一个源文件中的函数相关联,也可以与多个源文件中的函数相关联。如果所述tu与多个源文件中的函数相关联,则在本技术中以tu为粒度执行问题分析的方案可以应用于更复杂的跨文件问题分析场景。

6、参考所述第一方面,在所述第一方面的一些实现方式中,在对所述第一对象进行分析期间,选择所述tu队列中的第一tu,并确定与所述第一tu相关联的第一函数集。所述第一函数集包括与所述第一tu相关联的源文件中的函数。对所述第一函数集中的任意一个函数(例如,第一函数)进行分析,并确定所述第一函数的分析结果。所述第一函数的所述分析结果包括所述第一函数的调用关系或所述第一函数的质量问题中的至少一者。当存在与所述第一函数有调用关系的函数时(例如,所述第一函数调用另一函数),对第二函数集进行分析,并确定所述第二函数集中的函数的分析结果。所述第二函数集包括与所述第一函数有所述调用关系的至少一个函数(换句话说,所述第二函数集中包括的所述函数由所述第一函数调用)。当完成对所述tu队列中的全部所述tu的分析时,生成所述第一对象的所述问题分析结果。

7、在另一种可能的实现方式中,在对所述第一对象进行分析期间,可以从所述tu队列中选择至少两个tu,并对与所述两个tu相关联的函数执行同步分析。

8、基于上述方案,通过对所述多个tu执行并行处理来执行问题分析,以提高静态分析效率。

9、在另一种可能的实现方式中,在完成对与所述tu队列中的所述第一tu相关联的所有函数的分析后,从所述tu队列中删除所述第一tu。

10、基于上述方案,所述tu队列保存在系统的存储器中。因此,当完成对所述tu队列中的所述第一tu的分析时,或者当完成对所述tu队列中的所述第一tu的分析并且与所述第一tu相关联的所述函数未被与另一tu相关联的函数调用时,从所述tu队列中删除所述第一tu,以减少所述系统的内存消耗。

11、在另一种可能的实现方式中,如果在所述分析完成前所述第一tu所在的队列称为第一tu队列,则在所述第一tu的分析完成时,所述第一tu队列会更新为第二tu队列。如果在静态分析过程中在可视界面中呈现所述tu队列的变化,则可以得知所述第一tu队列中的tu的数量大于所述第二tu队列中的tu的数量,因为在对所述tu队列中的所述tu进行分析的过程中,会从所述tu队列中删除分析完成的tu。

12、在另一种可能的实现方式中,所述tu队列中的每个tu包括热度,所述热度用于标识所述tu关联的的函数被调用的次数,使得当从所述tu队列中选择tu进行分析时,可以基于所述tu队列中的所述tu的所述热度来选择所述第一tu,并且所述第一tu的热度标识符高于第一阈值。

13、基于上述方案,可以基于与所述tu队列中的每个tu相关联的函数被调用的次数来确定所述tu队列中的每个tu的处理优先级,从而优先分析与所述tu相关联并且被调用次数较多的函数。

14、在另一种可能的实现方式中,在对所述第一tu进行分析期间,如果发现与所述第一tu相关联的所述函数调用另一函数,例如,与所述第一tu相关联的所述函数是第三函数,所述第三函数调用第四函数,与所述第四函数相关联的tu是第二tu。在这种情况下,所述tu队列中的所述第二tu的热度增加。假设在开始分析所述第一tu前所述第一tu所在的tu队列称为第三tu队列。在确定与所述第一tu相关联的函数调用另一函数时,所述第三tu队列会更新为第四tu队列。应当理解的是,在该过程中,对所述第一tu的所述分析未完成。如果在所述静态分析过程中在所述可视界面中呈现所述tu队列的变化,则可以得知所述第三tu队列中的所述第二tu的热度低于所述第四tu队列中的所述第二tu的热度。

15、应当理解的是,上述描述中涉及的所述第一tu队列、所述第二tu队列、所述第三tu队列和所述第四tu队列在所述系统的所述存储器中作为一个tu队列呈现。所述第一tu队列、所述第二tu队列、所述第三tu队列和所述第四tu队列仅用于区分在所述静态分析过程中所述tu队列的变化。

16、在另一种可能的实现方式中,基于与所述tu队列中的所述tu相关联的函数的热度来更新所述tu队列中的所述tu的所述热度?;痪浠八?,与所述tu相关联的所述函数被调用的次数越多,所述tu队列中的所述tu的热度越高?;谒龈碌娜榷?即,随着所述tu被调用的次数增加而更新的热度)对所述tu队列中的所述tu的优先级进行排序。

17、在另一种可能的实现方式中,具体地,在对所述第一tu进行分析期间,如果与所述第一tu相关联的所述函数包括第二函数,则在完成对所述第二函数的分析后,确定是否完成了对调用所述第二函数的函数的分析。如果完成了对调用所述第二函数的每个函数的分析,则从所述存储器中清除所述第二函数以及在对所述第二函数进行分析的过程中生成的数据。

18、基于上述方案,从所述存储器中删除后续分析不需要的一些数据,以避免进一步静态分析带来的内存扩展问题,换句话说,减少所述系统的内存消耗。

19、在另一种可能的实现方式中,具体地,在对所述第一tu进行分析期间,如果与所述第一tu相关联的所述函数包括第二函数,则在完成对所述第二函数的分析后,生成所述第二函数的概要信息(例如,返回值、所述函数的函数、内部逻辑或环境变量),对所述第二函数的所述概要信息进行压缩,并将所述压缩的概要信息存储在查找表中。

20、基于上述方案,对所述函数的所述概要信息进行压缩,以进一步减少所述系统的内存消耗。

21、根据第二方面,本技术提供了一种静态分析装置。所述装置包括用于执行所述第一方面或所述第一方面的可能的实现方式中的任一项所述的方法的每个???。

22、根据第三方面,本技术提供了一种静态分析设备。所述设备包括处理器,所述处理器耦接到存储器,所述存储器用于存储计算机程序或指令,所述处理器用于执行所述存储器中的所述计算机程序或所述指令,使得所述设备执行所述第一方面或所述第一方面的可能的实现方式中的任一项所述的方法。

23、根据第四方面,本技术提供了一种静态分析设备。所述设备包括处理器,所述处理器用于:从存储器中调用计算机程序,并运行所述计算机程序,使得所述设备执行所述第一方面或所述第一方面的可能的实现方式中的任一项所述的方法。

24、根据第五方面,本技术提供了一种计算机可读存储介质。所述计算机可读介质中存储有要由计算设备执行的程序代码,所述程序代码包括指令,所述指令用于执行所述第一方面或所述第一方面的实现方式中的任一项所述的方法。

25、基于上述方面提供的实现方式,本技术可以通过进一步的组合提供更多的实现方式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1
imtoken助记词怎么填-imtoken钱包没有收益-imtoken矿工费太贵了-im钱包官网:token.im