System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技术实现步骤摘要】
【国外来华专利技术】
本申请涉及计算机,更具体地,涉及一种软件检测技术中的静态分析方法、装置和设备及计算机可读存储介质。
技术介绍
1、静态分析技术是一种在不执行程序的情况下对软件程序代码进行分析的技术。静态分析技术的关键功能是检查软件的表示和描述是否一致,是否存在冲突或歧义。作为白盒测试的一种,静态分析技术在软件程序代码的质量测试中起着重要作用。
2、然而,随着企业级软件(例如,存储软件)和云软件的快速发展,如今的软件产品呈现出规模更大、结构更复杂的趋势。然而,现有静态分析技术的局限性逐渐显露出来。以存储场景为例,一个存储系统可以包括多个子系统,其中,单个子系统的源代码规模可高达500万行。在现有静态分析技术中,通常以逐行扫描代码的方式执行分析。因此,在整个分析过程中,分析处理效率较低。因此,如何提供一种高效的静态分析方法成为亟待解决的技术问题。
技术实现思路
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相关联的所述函数包括第二函数,则在完成对所述第二函数的分析本文档来自技高网...
【技术保护点】
1.一种静态分析方法,其特征在于,所述静态分析方法包括:
2.根据权利要求1所述的方法,其特征在于,对与所述第一对象相关联的TU执行问题分析以生成所述第一对象的问题分析结果包括:
3.根据权利要求2所述的方法,其特征在于,基于所述TU队列,对与所述TU队列中的所述N个TU相关联的函数执行问题分析以生成所述第一对象的所述问题分析结果包括:
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求3所述的方法,其特征在于,所述TU队列中的每个TU包括热度,所述热度用于标识TU关联的函数被调用的次数,选择所述TU队列中的第一TU包括:
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
7.一种静态分析装置,其特征在于,所述静态分析装置包括:
8.根据权利要求7所述的装置,其特征在于,所述处理模块具体用于:
9.根据权利要求8所述的装置,其特征在于,所述处理模块具体用于:
10.根据权利要求9所述的装置,其特征在于,所述处理模块具体用于:
12.根据权利要求11所述的装置,其特征在于,所述处理模块具体用于:
13.一种静态分析设备,其特征在于,所述静态分析设备包括处理器,其中,所述处理器耦接到存储器,所述存储器用于存储计算机程序或指令,所述处理器用于执行所述存储器中的所述计算机程序或所述指令,使得所述设备执行根据权利要求1至6中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序或指令,当所述计算机程序或所述指令被执行时,所述计算机能够执行根据权利要求1至6中任一项所述的方法。
...【技术特征摘要】
【国外来华专利技术】
1.一种静态分析方法,其特征在于,所述静态分析方法包括:
2.根据权利要求1所述的方法,其特征在于,对与所述第一对象相关联的tu执行问题分析以生成所述第一对象的问题分析结果包括:
3.根据权利要求2所述的方法,其特征在于,基于所述tu队列,对与所述tu队列中的所述n个tu相关联的函数执行问题分析以生成所述第一对象的所述问题分析结果包括:
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
5.根据权利要求3所述的方法,其特征在于,所述tu队列中的每个tu包括热度,所述热度用于标识tu关联的函数被调用的次数,选择所述tu队列中的第一tu包括:
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
7.一种静态分析装置,其特征在于,所述静态分析装置包括:
8.根据权利要求7所述的装置,其特征在于,所述处理模块具体用于:
9....
【专利技术属性】
技术研发人员:派佛·马朱耶夫,黄理骏,亚历山大·格拉西莫夫,尚景亮,张振华,维奥妮卡·布可维奇,赵斗生,
申请(专利权)人:超聚变数字技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。