一种知识驱动的静态分析报告融合优化方法与流程

    技术2025-08-08  13


    本发明涉及软件测试,具体涉及一种知识驱动的静态分析报告融合优化方法。


    背景技术:

    1、现有的静态分析报告处理方法大致可分为三类,报告融合、警报分类、警报排序。报告融合是指将多份静态分析报告融合为一份报告。现有方法主要是通过统一格式进行融合,并未考虑报告之间的重复警报。本发明通过挖掘静态分析工具检查规则之间的关联关系来识别报告之间的重复警报,减少了警报数量,并且在融合时充分考虑各工具报告的优势,将尽可能多的有用信息保留下来。警报分类是指将警报分为正报与误报两类,仅对正报进行审查。现有方法主要通过机器学习技术构建分类器实现误报的剔除,然而由于准确率的限制,必然存在分类错误的情况,导致正报被剔除,软件存在安全隐患。本发明对重复警报进行融合,对未重复警报进行保留,不会导致正报被剔除的情况。警报排序是指将警报按照正报可能性由高到低排序。现有方法主要通过各种因素计算每条警报为正报的概率从而实现排序,然而排序算法往往针对特定的程序语言,并非通用。本发明的排序算法基于警报本身的三个因素进行计算,与工具、语言均无关,是一种通用的算法。

    2、在软件测试过程中,使用静态分析工具自动化扫描程序是发现程序中缺陷和漏洞的有效方法之一,可以在一定程度上提高软件质量。但是分析工具自身的局限性会导致分析报告中存在大量误报与漏报,进而致使审核分析报告成本过高,这不仅降低了工具的实用性,也大大延长了测试周期。同时由于不同静态分析工具的工作原理与运行机制大不相同,单一工具通常只在小部分问题上表现的很好。因此在检查源代码时,为了尽可能发现其中的缺陷,应使用多个工具,但每个工具在生成分析报告时遵循的风格不同,工具之间的缺陷检测能力的优势很难结合起来。


    技术实现思路

    1、本发明的目的是为了解决上述问题,提供一种知识驱动的静态分析报告融合优化方法。

    2、为了达到上述目的,本发明的技术方案如下:

    3、本发明提供了一种知识驱动的静态分析报告融合优化方法,包括以下步骤:

    4、步骤(1)、使用多个静态分析工具对缺陷代码集进行扫描获取原始分析报告,同时收集每个工具的检查规则并导出规则文件;

    5、步骤(2)、依据缺陷代码集中已知的缺陷代码位置为原始分析报告增加警报正误标签,并由此计算规则历史实践正确率;

    6、步骤(3)、以处理后的原始分析报告和规则文件为输入,基于规则行为相似度获取规则相似度,基于规则的描述信息对获取的规则关联关系进行审查以剔除错误关系,得到关联规则;

    7、步骤(4)、设计工具之间融合警报的格式,然后通过文件名、行号和关联规则三个要素完成报告融合;

    8、步骤(5)、基于警报的重复次数和警报的危险等级、警报所使用规则的历史实践正确率计算所有警报得分,并由高到低对警报进行排序。

    9、本发明进一步设置为:步骤(1)中收集的检查规则包含规则标识和描述信息。

    10、本发明进一步设置为:步骤(2)中规则历史实践正确率是指工具中每一条检查规则生成警报历史上,正报所占的比例,计算公式为:其中tp表示历史正报数,fp表示历史误报数。

    11、本发明进一步设置为:所述关联规则为不同静态分析工具之间检查内容相同的规则。

    12、本发明进一步设置为:所述规则行为相似度为两条规则实践的结果集合的相似程度,计算公式如下:

    13、

    14、其中a,b代表不同工具的两条检查规则,set(a)与set(b)代表规则a、b的实践结果集合,similarity为规则行为相似度。

    15、本发明进一步设置为:所述规则实践为静态分析工具在分析程序时根据检查规则来生成警报的行为,包含正实践与负实践两种情况,结果分别为生成一个正报和生成一个误报。

    16、本发明进一步设置为:步骤(4)中根据工具组合情况分别设计融合警报格式,设计原则为求同存异,即相同内容合并,不同内容保留。

    17、本发明进一步设置为:步骤(5)中警报得分计算公式如下:

    18、r(α)=βtime×f(α)+βaccuracy×h(α)+βseverity×g(α)βtime+βaccuracy+βseverity=1

    19、r(α):警报得分,取值区间为0到1;f(α):警报的重复次数得分;h(α):警报的规则历史实践正确率得分;g(α):警报的危险等级得分;βtime:警报的重复次数权值;βaccuracy:警报的规则历史实践正确率权值;βseverity:警报的危险等级权值,默认情况下:

    20、

    21、与现有技术相比,本方案的有益效果:提出一种知识驱动的静态分析报告融合优化方法,解决在使用多个静态分析工具时,分析报告之间存在重复警报、漏报、警报数量过多而难以审查的问题。



    技术特征:

    1.一种知识驱动的静态分析报告融合优化方法,其特征是,包括以下步骤:

    2.如权利要求1所述的一种知识驱动的静态分析报告融合优化方法,其特征是:步骤(1)中收集的检查规则包含规则标识和描述信息。

    3.如权利要求1所述的一种知识驱动的静态分析报告融合优化方法,其特征是:步骤(2)中规则历史实践正确率是指工具中每一条检查规则生成警报历史上,正报所占的比例,计算公式为:其中tp表示历史正报数,fp表示历史误报数。

    4.如权利要求1所述的一种知识驱动的静态分析报告融合优化方法,其特征是:所述关联规则为不同静态分析工具之间检查内容相同的规则。

    5.如权利要求1所述的一种知识驱动的静态分析报告融合优化方法,其特征是:所述规则行为相似度为两条规则实践的结果集合的相似程度,计算公式如下:

    6.如权利要求5所述的一种知识驱动的静态分析报告融合优化方法,其特征是:所述规则实践为静态分析工具在分析程序时根据检查规则来生成警报的行为,包含正实践与负实践两种情况,结果分别为生成一个正报和生成一个误报。

    7.如权利要求1所述的一种知识驱动的静态分析报告融合优化方法,其特征是:步骤(4)中根据工具组合情况分别设计融合警报格式,设计原则为求同存异,即相同内容合并,不同内容保留。

    8.如权利要求1所述的一种知识驱动的静态分析报告融合优化方法,其特征是:步骤(5)中警报得分计算公式如下:


    技术总结
    本发明公开了一种知识驱动的静态分析报告融合优化方法,涉及软件测试领域,其技术要点为:(1)使用静态分析工具对缺陷代码集进行扫描获取分析报告,收集检查规则;(2)分析报告中增加警报正误标签,计算规则历史实践正确率;(3)以分析报告和规则文件为输入,获取规则相似度,得到关联规则;(4)通过文件名、行号和关联规则三个要素完成报告融合;(5)基于重复次数、危险等级和规则的历史实践正确率计算所有警报得分,并由高到低对警报进行排序。提出一种知识驱动的静态分析报告融合优化方法,解决在使用多个静态分析工具时,分析报告之间存在重复警报、漏报、警报数量过多而难以审查的问题。

    技术研发人员:龚士豪,何杰,郑洪波,涂步华
    受保护的技术使用者:上海济物光电技术有限公司
    技术研发日:
    技术公布日:2024/10/24
    转载请注明原文地址:https://symbian.8miu.com/read-35250.html

    最新回复(0)