一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种多类型扫描工具源码指标统计方法、存储介质及终端与流程

2023-04-04 03:44:11 来源:中国专利 TAG:


1.本发明涉及软件安全技术领域,尤其涉及一种多类型扫描工具源码指标统计方法、存储介质及终端。


背景技术:

2.软件安全领域有各种各样的代码安全相关的诊断工具,如侧重于检测软件组成的组件成分分析(sca)工具,侧重于源码问题分析的静态分析(sast)工具,以及侧重于检测程序漏洞的动态分析测试(dast)工具等;工具类型的多样化也就促产出相应的工具整合应用平台,将多种不同类型的工具集成整合,以满足用户对代码各种问题的诊断需求;平台对用户代码的诊断数据可分为与工具相关的诊断指标和一些与工具无关的通用性指标,通用性指标通常包含原文件大小、源码行数、注释行数、源码的圈复杂度等;这些指标有些问题诊断工具可以提供,有些诊断工具则无法提供或者提供的数据不够全面,因此,需要一种统计源码通用指标的方法以满足工具整合应用平台对通用指标的展示和二次业务开发等需求。
3.但是,现有的实现方法存在以下不足:1、工具整合应用平台通过诊断工具获取通用性指标,但是不同诊断工具数据不一定满足工具整合应用平台所需的一些关键指标项,且平台指标极度依赖诊断工具,业务扩展不够灵活;2、工具整合应用平台的通用指标来源于不同诊断工具,则平台需要针对不同的工具进行数据接口对接,然而工具繁多且接口数据格式各异,导致维护成本太高;3、工具整合应用平台通用指标数据来源于工具,如果平台用户没有使用某些诊断工具,会造成通用数据项缺失;4、数据冲突,因为通用数据项来源于诊断工具,不同诊断工具间对同一份源代码的一些指标数据统计都有差异,此时工具整合应用平台面临冲突数据整合难题。
4.需要说明的是,在上述背景技术部分公开的信息只用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

5.本发明的目的在于克服现有技术的缺点,提供了一种多类型扫描工具源码指标统计方法、存储介质及终端,解决了现有方法存在的不足。
6.本发明的目的通过以下技术方案来实现:一种多类型扫描工具源码指标统计方法,所述源码指标统计方法包括:
7.步骤一、集成开发设计通用指标统计模块和诊断工具驱动模块,在服务器上执行指标统计模块对工具整合应用平台所需的通用指标项进行统计,指标统计驱动模块内封装有各种统计业务所需的通用指标的命令行参数,诊断工具驱动模块内封装有各种诊断工具相关的扫描命令行参数;
8.步骤二、用户触发诊断任务时创建任务,在创建任务的工程中传递创建参数,将诊断任务与诊断工具驱动模块和通用指标统计模块进行绑定;
9.步骤三、诊断工具驱动模块执行诊断工具命令,并在完成诊断工具命令后执行通
用指标统计模块完成对代码的通用指标项的统计,在通用指标统计模块执行完成后将数据组装成符合要求的数据格式发送到工具整合应用平台。
10.所述用户触发诊断任务时创建任务,在创建任务的工程中传递创建参数,将诊断任务与诊断工具驱动模块和通用指标统计模块进行绑定具体包括:
11.用户通过工具整合应用平台选择诊断工具a进行代码问题诊断后触发诊断任务,工具整合应用平台通过内部服务程序在任务编排工具中创建任务,命名为job-a,且在创建任务的过程中,针对诊断工具,工具整合应用平台在创建job-a传递创建参数时,同时传输各种命令执行所需的业务参数作为诊断工具驱动模块和/或通用指标统计模块的入参;
12.在创建的任务job-a的执行节点上,按照业务顺序先后绑定诊断工具驱动模块和通用指标统计模块。
13.所述同时传输各种命令执行所需的业务参数作为诊断工具驱动模块和/或通用指标统计模块的入参包括:对于诊断工具驱动模块需要传递诊断工具a要扫描的源码地址或者源码拉取地址以及诊断工具a必要的工具连接信息;对于通用指标统计模块需要传递代码路径、平台回调地址和访问令牌token信息。
14.所述诊断工具驱动模块执行诊断工具命令包括:
15.诊断工具驱动模块根据诊断工具的类型将执行诊断工具内部实现源码程序扫描步骤的命令行进行逻辑化串联,并将需要多次调用的诊断命令步骤封装在诊断工具驱动模块内部;
16.当然外部输入命令行初始参数到诊断工具驱动模块时,诊断工具驱动模块对前一步骤命令的标识进行判断,如果前一步骤命令标识为成功标识,则执行下一步命令,否则结束诊断。
17.所述通用指标统计模块完成对代码的通用指标项的统计包括:
18.通用指标统计模块将不同指标统计命令进行封装和串联,调用脚本程序传入源码路径和平台回调地址这些初始参数,通过脚本程序处理各个统计指标数据逻辑,不同指标数据项的命令执行结果互不影响;
19.将统计成功的数据以追加的形式组装为标准格式输出到约定的服务器路径,在所有指标命令执行完成后,脚本程序通过回调地址将统计数据发送到工具整合应用平台,从而完成通用指标项的采集统计。
20.任务job-a在触发后的执行过程中,在服务器端执行job-a编排任务,该任务执行时依次执行驱动在同一台服务主机上的诊断工具驱动模块和通用指标统计模块。
21.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时所述源码指标统计方法的步骤。
22.一种终端设备,包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现所述源码指标统计方法的步骤。
23.本发明具有以下优点:一种多类型扫描工具源码指标统计方法、存储介质及终端,通用指标的获取和具体诊断工具解耦,不管诊断工具本身是否支持一些通用指标数据项获取,工具整合应用平台都能比较准确、标准的统计平台业务所需的通用指标项,而且可以根据平台自身的扩展需求,集成其它专业化的指标统计工具,为平台用户提供更多维度的代码通用指标数据;实施方案简单,只需要利用现有的专业工具在源码所在的服务端即可完
成通用指标数据的获取,不需要复杂的接口调用;且指标获取功能可插拔,可根据平台业务需求灵活控制所需的通用指标获取等;工具整合应用平台以专业的通用指标检测工具作为标准数据,不存在诊断工具的不同导致的数据差异、冲突及缺失问题。
附图说明
24.图1为本发明方法的流程示意图;
25.图2为工具脚本cloc.py内部的逻辑示意图;
26.图3为诊断工具a的诊断步骤示意图。
具体实施方式
27.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下结合附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的保护范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。下面结合附图对本发明做进一步的描述。
28.如图1所示,本发明的其中一种实施方式具体涉及一种兼容不同类型扫描工具源码指标信息统计方法,其具体包括以下内容:
29.s1、根据工具整合应用平台所需的通用指标项需求,自行开发设计用于指标统计且便于在服务器上直接执行的脚本化程序,如python脚本或shell脚本等,此处便于表述命名为cloc.py。该脚本封装各类可以统计业务所需通用指标的命令行,命令行可以是系统命令,也可以是安装的专业化的统计工具执行命令等。
30.如图2所示,例如业务需求要统计源代码的文件大小、代码行、代码注释等。假如文件大小通过linux命令du-h sourcedir获取,代码行、代码注释行通过第三方的统计小工具cloc获取,其执行命令为cloc sourcedir。脚本cloc.py即是将这些不同指标统计命令行统一封装、串联在一起,调用脚本cloc.py,传入源码路径、平台回调地址等必要的初始参数,由cloc.py脚本内部处理各个统计指标数据逻辑,且不同指标数据项的命令执行结果之间不相互影响,即前面指标数据统计成功与否不影响后续指标的统计,以此实现架构的松耦合。统计成功的数据以追加的形式组装为标准的json格式输出到约定的服务器路径,待所有指标命令执行完毕后,cloc.py内部通过回调地址将统计数据发送到工具整合应用平台,从而完成通用指标项的采集。
31.当业务需要新增新的统计指标,只需要在服务端环境新增相应的指标统计工具,并在cloc.py驱动脚本中添加对新指标统计命令行的调用步骤即可。在已有的指标统计项上,现业务需求需要统计源码的圈复杂度,于是新加了一种专门统计源码圈复杂度的命令行小工具lizard,其脚本执行命令为lizard sourcedir,则只需在cloc.py脚本内部顺序流程中,将添加圈复杂度的命令相关加入即可,其它步骤完全不用改变,以此快捷的实现动态扩充通用指标统计项的能力。同理,如果要移除某指标,简单修改cloc.py脚本,移除不需要的指标统计命令行相关步骤即可;当然,也可以通过外部传入控制参数,通过cloc.py内部
逻辑动态的选择需要的指标项,实现对通用指标获取的灵活控制。
32.s2、如图3所示,工具整合应用平台预先根据整合的诊断工具的不同,自行开发设计诊断工具驱动脚本,此处命名为tool-a.py。该脚本封装诊断工具相关的扫描命令行参数。例如工具a对源码程序的扫描要经过源码拉取、编译、扫描、问题分析、结果上传(工具命令本身行为)等有序步骤,则驱动脚本tool-a.py即为将这些执行步骤的命令行逻辑化的串联在一起,将需要多次调用的诊断命令行步骤完全封装在tool-a.py内部,外部调用方只需传入必要的命令行初始参数,由tool-a.py来整合各个执行步骤,由此极大的简化了诊断工具的命令行调用工作。
33.因为tool-a.py内部是对各个执行步骤的逻辑串联,故内部完全可以根据前一步骤命令的成功、失败(命令的成功失败判断标识由诊断工具原生命令提供,比如很多命令以输出0标识成功,其它非0数字为失败或异常,故tool-a.py脚本程序步骤中调用工具执行命令后,只需判断其输出结果即可)情况决定是否进行下一步的命令行执行,流程控制更加便捷;
34.因为诊断工具脚本为自行开发设计,可实现外部输入命令的标准化。不论何种类型的诊断工具,工具整合应用平台只需设计一套流程及一套标准化参数输入命令行,由诊断驱动脚本内部将标准化参数解析为诊断工具自有的诊断参数执行,对上层应用来说完全屏蔽了不同诊断工具命令行的差异,以此极大的减少工具整合应用平台接入不同诊断工具时重复的编码、维护工作。
35.诊断工具脚本的成功失败由诊断工具本身的命令决定,比如输入给诊断工具的连接地址不正确,源码文件路径错误等,导致诊断工具命令执行失败,失败后再执行指标统计工具已失去意义,流程中断;通用指标脚本内部的指标项命令的成功失败也由指标脚本本身根据输入项来决定,整个指标脚本的成功失败取决于是否产生统计指标文件。
36.s3、用户使用工具整合应用平台选择了某诊断工具(如工具a)进行代码问题诊断后,触发诊断任务,工具整合应用平台会通过其内部服务程序在任务编排工具(如jenkins)创建任务,命名为job-a。在创建的任务job-a的脚本执行节点上(如jenkins中的execute shell节点),按业务顺序先后绑定诊断工具脚本tool-a.py和通用指标脚本cloc.py;
37.s4、步骤3中创建任务的过程中,针对诊断工具,工具整合应用平台在创建job-a传递创建参数时,会同时传输各种命令执行所需的业务参数作为执行脚本的入参。比如针对tool-a.py,会传递诊断工具a要扫描的源码地址或源码拉取地址(如git_url)、诊断工具a必要的工具连接信息等;同理针对脚本cloc.py,为了统计代码通用指标,同样会传递诸如代码路径source_path,平台回调地址callback_url、访问令牌token等必要信息,意思为执行脚本需要传递的诸如回调地址、访问令牌及工具执行诊断所需的其它必要信息。
38.s5、job-a在触发后执行的过程中,会在服务器端执行job-a编排任务,该任务执行时会执行配置在任务编排工具用于编排脚本执行的脚本执行配置节点(比如常用的jenkins编排工具上,构建步骤中可选择的execute shell脚本命令配置节点),也即依次驱动在同一台服务主机上的tool-a.py和cloc.py执行。
39.s6、tool-a.py执行正常的诊断工具命令,诊断工具命令执行完毕后执行cloc.py脚本,完成对代码的通用指标项的统计。cloc.py脚本执行完成后,会将数据组装成工具整合应用平台协商一致的、标准的、可扩展的json格式,通过http请求的形式发送到工具整合
应用平台。而后平台完成后续的业务数据处理。
40.本发明的另一实施方式涉及一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述源码指标统计方法的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
41.本发明的再一实施方式涉及一种终端设备,其包括存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现所述源码指标统计方法的步骤。
42.以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献