CN117909205A - 代码静态分析结果管理方法、设备及可读存储介质 - Google Patents
代码静态分析结果管理方法、设备及可读存储介质 Download PDFInfo
- Publication number
- CN117909205A CN117909205A CN202211248336.0A CN202211248336A CN117909205A CN 117909205 A CN117909205 A CN 117909205A CN 202211248336 A CN202211248336 A CN 202211248336A CN 117909205 A CN117909205 A CN 117909205A
- Authority
- CN
- China
- Prior art keywords
- defect
- code
- static analysis
- target
- state
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004458 analytical method Methods 0.000 title claims abstract description 266
- 230000003068 static effect Effects 0.000 title claims abstract description 226
- 238000007726 management method Methods 0.000 title claims description 33
- 230000007547 defect Effects 0.000 claims abstract description 709
- 238000000034 method Methods 0.000 claims abstract description 58
- 230000008569 process Effects 0.000 claims abstract description 26
- 230000008859 change Effects 0.000 claims description 80
- 230000004048 modification Effects 0.000 claims description 23
- 238000012986 modification Methods 0.000 claims description 23
- 238000012508 change request Methods 0.000 claims description 19
- 238000012545 processing Methods 0.000 description 28
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 230000002452 interceptive effect Effects 0.000 description 4
- 238000012552 review Methods 0.000 description 4
- 239000002699 waste material Substances 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000004044 response Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 241000255749 Coccinellidae Species 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005206 flow analysis Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种代码静态分析结果管理方法、设备及计算机可读存储介质,所述方法包括:通过获取目标代码对应的静态分析结果,对静态分析结果进行扫描并随扫描进程实时确定静态分析结果对应的静态分析工具,通过确定出的静态分析工具对应预设的解析规则对静态分析结果进行解析,得到目标代码的缺陷信息,将解析得到的所有缺陷信息实时存储至代码缺陷列表,以供查阅。本申请实现了一种代码静态分析结果管理方案,能够帮助提高用户对代码缺陷的排查效率。
Description
技术领域
本申请涉及代码分析技术领域,尤其涉及一种代码静态分析结果管理方法、设备及计算机可读存储介质。
背景技术
静态分析是指在不运行程序的条件下,通过词法分析、语法分析、控制流、数据流分析等技术对程序代码进行分析,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。对代码进行静态分析的工具有很多,例如,针对linux内核代码的静态分析工具有headerdep、includecheck、coccinelle、clang analyses等。不同的静态分析工具所分析的维度可能不同,采用各种不同的静态分析工具对代码进行分析,更利于技术人员发现代码中存在各种代码缺陷,从而利于开发出更高质量的程序代码。
目前,对代码采用静态分析工具进行分析时,不同静态分析工具分析出的代码缺陷结果以不同的形式独立呈现,当技术人员需对代码缺陷进行排查时,效率较低。
发明内容
本申请的主要目的在于提供一种代码静态分析结果管理方法、设备及计算机可读存储介质,旨在提出一种代码静态分析结果管理方案,帮助提高用户对代码缺陷的排查效率。
为实现上述目的,本申请提供一种代码静态分析结果管理方法,所述代码静态分析结果管理方法包括以下步骤:
获取目标代码对应的静态分析结果;
对所述静态分析结果进行扫描并随扫描进程实时确定所述静态分析结果对应的静态分析工具;
通过确定出的所述静态分析工具对应预设的解析规则对所述静态分析结果进行解析,得到所述目标代码的缺陷信息;
将解析得到的所有缺陷信息实时存储至代码缺陷列表,以供查阅。
可选地,所述静态分析结果中携带有不同静态分析工具对应的标识信息,所述对所述静态分析结果进行扫描并随扫描进程实时确定所述静态分析结果对应的静态分析工具包括:
对所述静态分析结果进行扫描,根据扫描到的所述标识信息实时确定所述静态分析结果对应的第一静态分析工具。
可选地,所述代码缺陷列表中包括各条缺陷信息分别对应的代码缺陷的缺陷状态,缺陷状态的取值范围至少包括未处理状态、疑似重复状态、正在处理状态、误报状态和已修复状态中的任意两种。
可选地,所述代码静态分析结果管理方法还包括:
接收针对所述目标代码的缺陷状态变更请求,所述缺陷状态变更请求包括请求变更状态的第一目标代码缺陷和对应的目标缺陷状态;
将所述代码缺陷列表中所述第一目标代码缺陷的缺陷状态变更为所述目标缺陷状态;
将对所述第一目标代码缺陷进行状态变更的变更结果返回给发送所述缺陷状态变更请求的请求端,以供所述请求端输出所述变更结果。
可选地,所述将解析得到的缺陷信息存储至代码缺陷列表的步骤包括:
检测所述第二目标代码缺陷是否和第三目标代码缺陷属于因代码改动导致的重复缺陷,其中,所述第二目标代码缺陷是解析得到的各个代码缺陷中的任意一个代码缺陷,所述第三目标代码缺陷为所述代码缺陷列表中的任意一个代码缺陷;
若确定所述第二目标代码缺陷和所述第三目标代码缺陷属于因代码改动导致的重复缺陷,则将所述第二目标代码缺陷的缺陷信息存储至所述代码缺陷列表,并将所述第二目标代码缺陷在所述代码缺陷列表中的缺陷状态标记为疑似重复状态,以及将所述第三目标代码缺陷在所述代码缺陷列表中的缺陷状态更改为疑似重复状态;
若确定所述第二目标代码缺陷和所述代码缺陷列表中的任意一个代码缺陷均不属于因代码改动导致的重复缺陷,则将所述第二目标代码缺陷的缺陷信息存储至所述代码缺陷列表,并将所述第二目标代码缺陷在所述代码缺陷列表中的缺陷状态标记为未处理状态。
可选地,所述检测所述第二目标代码缺陷是否和第三目标代码缺陷属于因代码改动导致的重复缺陷的步骤包括:
将所述第二目标代码缺陷的缺陷信息中的各项信息分别与第三目标代码缺陷的缺陷信息中的相同项信息进行匹配;
根据匹配结果确定所述第二目标代码缺陷的缺陷信息中与所述第三目标代码缺陷的缺陷信息中匹配一致的目标信息项,将各所述目标信息项对应预设的权重进行求和,得到所述第二目标代码缺陷与所述第三目标代码缺陷之间的匹配值;
若所述匹配值大于预设阈值,则确定所述第二目标代码缺陷和所述第三目标代码缺陷属于因代码改动导致的重复缺陷;
若所述匹配值小于或等于所述预设阈值,则确定所述第二目标代码缺陷是和所述第三目标代码缺陷不属于因代码改动导致的重复缺陷。
可选地,所述将所述代码缺陷列表中所述第一目标代码缺陷的缺陷状态变更为所述目标缺陷状态的步骤之前,还包括:
检测目标状态变更次序是否符合预设的合法状态变更次序,其中,所述目标状态变更次序是指将缺陷状态从所述代码缺陷列表中所述第一目标代码缺陷的缺陷状态变更为所述目标缺陷状态的变更次序;
若所述目标状态变更次序符合所述合法状态变更次序,则执行所述将所述代码缺陷列表中所述第一目标代码缺陷的缺陷状态变更为所述目标缺陷状态的步骤;
若所述目标状态变更次序不符合所述合法状态变更次序,则得到变更失败的变更结果。
可选地,所述将解析得到的所有缺陷信息实时存储至代码缺陷列表的步骤之后,还包括:
当接收到请求端发送的针对所述目标代码的缺陷信息查询请求后,从所述代码缺陷列表中获取所述缺陷信息查询请求所请求的缺陷信息;
将获取到的缺陷信息返回给所述请求端,以供所述请求端输出所接收到的缺陷信息,其中,所述请求端为客户端或浏览器。
可选地,所述将解析得到的所有缺陷信息实时存储至代码缺陷列表的步骤之后,还包括:
当接收到请求端发送的针对所述目标代码的缺陷信息导出请求后,从所述代码缺陷列表中获取所述缺陷信息导出请求所请求的缺陷信息;
从所述缺陷信息导出请求中提取导出文件格式;
将获取到的缺陷信息按照所述导出文件格式生成缺陷信息文件;
将所述缺陷信息文件返回给所述请求端,以供所述请求端输出所述缺陷信息文件,其中,所述请求端为客户端或浏览器。
为实现上述目的,本申请还提供一种电子设备,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代码静态分析结果管理程序,所述代码静态分析结果管理程序被所述处理器执行时实现如上所述的代码静态分析结果管理方法的步骤。
此外,为实现上述目的,本申请还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有代码静态分析结果管理程序,所述代码静态分析结果管理程序被处理器执行时实现如上所述的代码静态分析结果管理方法的步骤。
本申请中,通过获取目标代码对应的静态分析结果,对静态分析结果进行扫描并随扫描进程实时确定静态分析结果对应的静态分析工具,通过确定出的静态分析工具对应预设的解析规则对静态分析结果进行解析,得到目标代码的缺陷信息,将解析得到的所有缺陷信息实时存储至代码缺陷列表,以供查阅,实现了一种代码静态分析结果管理方案。相比于目前不同静态分析工具分析出的代码缺陷结果以不同的形式独立呈现给技术人员,本申请提供的该管理方案可以将各种静态分析工具对代码进行分析得到的结果采用相应的解析规则进行解析,并将解析得到的缺陷信息统一存储至代码缺陷列表,便于用户通过查看代码缺陷列表中的缺陷信息,对不同静态分析工具分析的结果进行直观对比,或对同一静态分析工具对同一代码的不同版本进行分析的结果进行直观对比,从而能够帮助提高用户对代码缺陷的排查效率。
附图说明
图1为本申请实施例方案涉及的硬件运行环境的结构示意图;
图2为本申请代码静态分析结果管理方法第一实施例的流程示意图;
图3为本申请实施例涉及的一种系统框架示意图;
图4为本申请实施例涉及的一种提交静态分析结果的交互流程示意图;
图5为本申请实施例涉及的一种查询代码缺陷的交互流程示意图;
图6为本申请实施例涉及的一种更新代码缺陷状态的交互流程示意图;
图7为本申请实施例涉及的一种导出代码缺陷的交互流程示意图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
如图1所示,图1是本申请实施例方案涉及的硬件运行环境的设备结构示意图。
需要说明的是,本申请实施例电子设备,电子设备可以是智能手机、个人计算机、服务器等设备,在此不做具体限制。
如图1所示,该电子设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及代码静态分析结果管理程序。操作系统是管理和控制设备硬件和软件资源的程序,支持代码静态分析结果管理程序以及其它软件或程序的运行。在图1所示的设备中,用户接口1003主要用于与客户端进行数据通信;网络接口1004主要用于与服务器建立通信连接;而处理器1001可以用于调用存储器1005中存储的代码静态分析结果管理程序,并执行以下操作:
获取目标代码对应的静态分析结果;
对静态分析结果进行扫描并随扫描进程实时确定静态分析结果对应的静态分析工具;
通过确定出的静态分析工具对应预设的解析规则对静态分析结果进行解析,得到目标代码的缺陷信息;
将解析得到的所有缺陷信息实时存储至代码缺陷列表,以供查阅。
进一步地,静态分析结果中携带有不同静态分析工具对应的标识信息,对静态分析结果进行扫描并随扫描进程实时确定静态分析结果对应的静态分析工具包括:
对静态分析结果进行扫描,根据扫描到的标识信息实时确定静态分析结果对应的第一静态分析工具。
进一步地,代码缺陷列表中包括各条缺陷信息分别对应的代码缺陷的缺陷状态,缺陷状态的取值范围至少包括未处理状态、疑似重复状态、正在处理状态、误报状态和已修复状态中的任意两种。
进一步地,处理器1001还可以用于调用存储器1005中存储的代码静态分析结果管理程序,执行以下操作:
接收针对目标代码的缺陷状态变更请求,缺陷状态变更请求包括请求变更状态的第一目标代码缺陷和对应的目标缺陷状态;
将代码缺陷列表中第一目标代码缺陷的缺陷状态变更为目标缺陷状态;
将对第一目标代码缺陷进行状态变更的变更结果返回给发送缺陷状态变更请求的请求端,以供请求端输出变更结果。
进一步地,将解析得到的缺陷信息存储至代码缺陷列表的操作包括:
检测第二目标代码缺陷是否和第三目标代码缺陷属于因代码改动导致的重复缺陷,其中,第二目标代码缺陷是解析得到的各个代码缺陷中的任意一个代码缺陷,第三目标代码缺陷为代码缺陷列表中的任意一个代码缺陷;
若确定第二目标代码缺陷和第三目标代码缺陷属于因代码改动导致的重复缺陷,则将第二目标代码缺陷的缺陷信息存储至代码缺陷列表,并将第二目标代码缺陷在代码缺陷列表中的缺陷状态标记为疑似重复状态,以及将第三目标代码缺陷在代码缺陷列表中的缺陷状态更改为疑似重复状态;
若确定第二目标代码缺陷和代码缺陷列表中的任意一个代码缺陷均不属于因代码改动导致的重复缺陷,则将第二目标代码缺陷的缺陷信息存储至代码缺陷列表,并将第二目标代码缺陷在代码缺陷列表中的缺陷状态标记为未处理状态。
进一步地,检测第二目标代码缺陷是否和第三目标代码缺陷属于因代码改动导致的重复缺陷的操作包括:
将第二目标代码缺陷的缺陷信息中的各项信息分别与第三目标代码缺陷的缺陷信息中的相同项信息进行匹配;
根据匹配结果确定第二目标代码缺陷的缺陷信息中与第三目标代码缺陷的缺陷信息中匹配一致的目标信息项,将各目标信息项对应预设的权重进行求和,得到第二目标代码缺陷与第三目标代码缺陷之间的匹配值;
若匹配值大于预设阈值,则确定第二目标代码缺陷和第三目标代码缺陷属于因代码改动导致的重复缺陷;
若匹配值小于或等于预设阈值,则确定第二目标代码缺陷是和第三目标代码缺陷不属于因代码改动导致的重复缺陷。
进一步地,将代码缺陷列表中第一目标代码缺陷的缺陷状态变更为目标缺陷状态的操作之前,处理器1001还可以用于调用存储器1005中存储的代码静态分析结果管理程序,执行以下操作:
检测目标状态变更次序是否符合预设的合法状态变更次序,其中,目标状态变更次序是指将缺陷状态从代码缺陷列表中第一目标代码缺陷的缺陷状态变更为目标缺陷状态的变更次序;
若目标状态变更次序符合合法状态变更次序,则执行将代码缺陷列表中第一目标代码缺陷的缺陷状态变更为目标缺陷状态的操作;
若目标状态变更次序不符合合法状态变更次序,则得到变更失败的变更结果。
进一步地,将解析得到的所有缺陷信息实时存储至代码缺陷列表的操作之后,处理器1001还可以用于调用存储器1005中存储的代码静态分析结果管理程序,执行以下操作:
当接收到请求端发送的针对目标代码的缺陷信息查询请求后,从代码缺陷列表中获取缺陷信息查询请求所请求的缺陷信息;
将获取到的缺陷信息返回给请求端,以供请求端输出所接收到的缺陷信息,其中,请求端为客户端或浏览器。
进一步地,将解析得到的所有缺陷信息实时存储至代码缺陷列表的操作之后,处理器1001还可以用于调用存储器1005中存储的代码静态分析结果管理程序,执行以下操作:
当接收到请求端发送的针对目标代码的缺陷信息导出请求后,从代码缺陷列表中获取缺陷信息导出请求所请求的缺陷信息;
从缺陷信息导出请求中提取导出文件格式;
将获取到的缺陷信息按照导出文件格式生成缺陷信息文件;
将缺陷信息文件返回给请求端,以供请求端输出缺陷信息文件,其中,请求端为客户端或浏览器。
基于上述的结构,提出代码静态分析结果管理方法的各个实施例。
参照图2,图2为本申请代码静态分析结果管理方法第一实施例的流程示意图。
本申请实施例提供了代码静态分析结果管理方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。在本实施例中,代码静态分析结果管理方法的执行主体可以是个人电脑、智能手机、服务器等电子设备。以下为便于描述,省略执行主体进行各实施例的阐述。在本实施例中,代码静态分析结果管理方法包括:
步骤S10,获取目标代码对应的静态分析结果;
本实施例中,将需要进行分析的代码称为目标代码。目标代码可以是linux内核代码,或者也可以是其他用户态软件的代码,在本实施例中对目标代码的用途并不做限制。目标代码对应的静态分析结果是采用静态分析工具对目标代码进行分析得到的结果。本实施例对获取目标代码对应的静态分析结果的方式并不做限制。例如,在一可行实施方式中,可以由服务器进行代码静态分析结果管理,由该服务器提供统一的静态分析结果提交接口,各种静态分析工具可通过该接口向该服务器提交目标代码的静态分析结果,该服务器对所接收到的静态分析结果执行后续的管理流程。
步骤S20,对静态分析结果进行扫描并随扫描进程实时确定静态分析结果对应的静态分析工具;
获取到的静态分析结果可能来自于多种静态分析工具中的一种,可以通过对静态分析结果进行扫描,随扫描进程实时确定静态分析结果对应的静态分析工具,也即确定静态分析结果来自于哪一个静态分析工具。扫描确定静态分析结果对应的静态分析工具具体是通过扫描分析静态分析结果的具体内容,根据内容中所包含的信息来确定静态分析工具。例如,在一可行实施方式中,不同静态分析工具所分析得到的静态分析结果中缺陷信息会携带不同的关键字,通过分析静态分析结果中所记载的缺陷信息携带哪种关键字,即可确定静态分析结果来自于哪种静态分析工具。
又如,在一可行实施方式中,静态分析结果中携带有作出该静态分析结果的静态分析工具所对应的标识信息,通过对静态分析结果进行扫描,获取静态分析结果中所携带的标识信息,根据该标识信息可实时确定该静态分析结果对应的静态分析工具。以下为便于区分,将该静态分析结果对应的静态分析工具称为第一静态分析工具。
步骤S30,通过确定出的静态分析工具对应预设的解析规则对静态分析结果进行解析,得到目标代码的缺陷信息;
静态分析结果中记载有目标代码的代码缺陷的详细信息(以下称为缺陷信息),不同的静态分析工具对同一代码作出的静态分析结果中可能记载有该代码不同方面的缺陷信息,且不同的静态分析工具对同一代码作出的静态分析结果中缺陷信息的格式是不同的,针对不同的静态分析工具的静态分析结果的格式,可以设置各种静态分析工具分别对应的解析规则。解析规则可以包括将静态分析结果中的缺陷信息转换为另一种格式的缺陷信息的规则,各种静态分析工具对应的解析规则可以设置为将静态分析结果中相应格式的缺陷信息转换为统一的另一种格式的缺陷信息。也即,假设静态分析工具1作出的静态分析结果中缺陷信息以格式a记载,静态分析工具2作出的静态分析结果中缺陷信息以格式b记载,静态分析工具1对应的解析规则可以包括将静态分析结果中a格式的缺陷信息转换为c格式的缺陷信息的规则,静态分析工具2对应的解析规则可以包括将静态分析结果中b格式的缺陷信息转换为c格式的缺陷信息的规则,c格式即统一格式。在一可行实施方式中,在通过解析规则对静态分析结果进行解析时,可以针对静态分析结果每一行的信息,使用解析规则中与格式相关的关键字进行匹配,如果匹配命中,则将该关键字所指示的缺陷信息转换为统一格式的缺陷信息。
步骤S40,将解析得到的所有缺陷信息实时存储至代码缺陷列表,以供查阅。
将缺陷信息存储至代码缺陷列表后,在具体实施方式中,可以通过响应于用户触发的请求,将代码缺陷列表输出展示或输出打印等方式供用户查看,或者,也可以由用户从存储器中导出进行查看。本实施例中,对用户查阅代码缺陷列表的方式并不做限制。
在一可行实施方式中,对不同静态分析工具作出的静态分析结果进行解析得到的缺陷信息可以采用不同的代码缺陷列表进行存储。例如,将对静态分析工具1作出的静态分析结果进行解析得到的缺陷信息存储在代码缺陷列表1中,将对静态分析工具2作出的静态分析结果进行解析得到的缺陷信息存储在代码缺陷列表2中。在需要针对采用同一静态分析工具对多个版本的目标代码进行分析得到的静态分析结果进行对比分析的情况下,可以输出该静态分析工具所对应的代码缺陷列表中的缺陷信息,以供用户对历次静态分析结果进行对比分析。
在一可行实施方式中,解析得到的缺陷信息可以包括至少一个代码缺陷对应的缺陷信息,每个代码缺陷的缺陷信息可以包括多项信息,例如源文件路径、缺陷所在行、缺陷所在列以及缺陷详细描述信息等,将每个代码缺陷的各项信息以表格的方式进行存储,能够更加方便用户阅读,进而更利于用户快速地排查并解决目标代码中所出现的各个缺陷。
在本实施例中,通过获取目标代码对应的静态分析结果,对静态分析结果进行扫描并随扫描进程实时确定静态分析结果对应的静态分析工具,通过确定出的静态分析工具对应预设的解析规则对静态分析结果进行解析,得到目标代码的缺陷信息,将解析得到的所有缺陷信息实时存储至代码缺陷列表,以供查阅,实现了一种代码静态分析结果管理方案。相比于目前不同静态分析工具分析出的代码缺陷结果以不同的形式独立呈现给技术人员,本申请提供的该管理方案可以将各种静态分析工具对代码进行分析得到的结果采用相应的解析规则进行解析,并将解析得到的缺陷信息统一存储至代码缺陷列表,便于用户通过查看代码缺陷列表中的缺陷信息,对不同静态分析工具分析的结果进行直观对比,或对同一静态分析工具对同一代码的不同版本进行分析的结果进行直观对比,从而能够帮助提高用户对代码缺陷的排查效率。
进一步地,基于上述第一实施例,提出本申请代码静态分析结果管理方法第二实施例,在本实施例中,代码缺陷列表中可以包括各条缺陷信息分别对应的代码缺陷的缺陷状态。代码缺陷的缺陷状态可以被设置为取值范围中的一种。在一可行实施方式中,取值范围可设置为至少包括未处理状态、疑似重复状态、正在处理状态、误报状态和已修复状态中的任意一种。在另一可行实施方式中,取值范围可设置为至少包括未处理状态、疑似重复状态、正在处理状态、误报状态和已修复状态中的任意两种。其中,未处理状态用于指示该代码缺陷尚未被处理;疑似重复状态用于指示该代码缺陷可能与可另一个代码缺陷属于重复的缺陷;正在处理状态用于指示该代码缺陷正在被处理;误报状态用于指示该代码缺陷属于静态分析工具误识别的缺陷,也即实际上目标代码中并不存在该缺陷;已修复状态用于指示该代码缺陷已经被修复。通过代码缺陷列表中包含各个代码缺陷的缺陷状态,可以使得用户查阅代码缺陷列表时能够直观地了解到各个代码缺陷当前所处的状态,从而更便于用户快速排查解决各种代码缺陷。
在本实施例中,并不限制代码缺陷列表中各个代码缺陷的缺陷状态的标记方式,例如可以是响应于用户的请求对代码缺陷列表中各个代码缺陷的缺陷状态进行标记,又如,可以是在满足设定的触发条件时将代码缺陷列表中的代码缺陷标记为相应的状态。例如,在一可行实施方式中,可以在将某代码缺陷的缺陷信息加入到代码缺陷列表之前,先将该代码缺陷的缺陷信息与代码缺陷列表中的缺陷信息进行比对,若没有与该代码缺陷的缺陷信息匹配一致的代码缺陷,则将该代码缺陷加入代码缺陷列表中,并将该代码缺陷在代码缺陷列表中的缺陷状态标记为未处理状态。
在一可行实施方式中,在缺陷状态的取值范围至少包括两种状态的情况下,代码静态分析结果管理方法还包括:
步骤S50,接收针对目标代码的缺陷状态变更请求,缺陷状态变更请求包括请求变更状态的第一目标代码缺陷和对应的目标缺陷状态;
可以提供缺陷状态变更请求的触发途径,在本实施方式中对触发途径并不做限制。例如,在一可行实施方式中,可以由服务器进行代码静态分析结果管理,在与该服务器对应设置的客户端或web应用中,提供用户触发缺陷状态变更请求的交互页面,客户端或运行该web应用的浏览器中响应于用户在交互页面中输入的缺陷状态变更信息,向服务器发送缺陷状态变更请求。
缺陷状态变更请求中可以携带请求状态的代码缺陷(以下为示区分称为第一目标代码缺陷),以及携带想要变更至哪一种缺陷状态(以下称为目标缺陷状态以示区分)。
步骤S60,将代码缺陷列表中第一目标代码缺陷的缺陷状态变更为目标缺陷状态;
可以对缺陷状态变更请求进行解析,得到第一目标代码缺陷和目标缺陷状态,再在代码缺陷列表中查找第一目标代码缺陷,将该第一目标代码缺陷的缺陷状态变更为目标缺陷状态。
步骤S70,将对第一目标代码缺陷进行状态变更的变更结果返回给发送缺陷状态变更请求的请求端,以供请求端输出变更结果。
基于本实施方式提供的缺陷状态变更途径,用户可以灵活地修改代码缺陷列表中各个代码缺陷的缺陷状态,从而更便于用户快速排查解决各种代码缺陷,进一步提高用户对代码缺陷的排查效率。
在一可行实施方式中,步骤S40包括:
步骤S401,检测第二目标代码缺陷是否和第三目标代码缺陷属于因代码改动导致的重复缺陷,其中,第二目标代码缺陷是解析得到的各个代码缺陷中的任意一个代码缺陷,第三目标代码缺陷为代码缺陷列表中的任意一个代码缺陷;
代码缺陷列表中可能包括对目标代码的某个历史版本进行分析得到的缺陷信息,用户将目标代码进行改动更新后,将新版本的目标代码再采用静态分析工具进行分析获得静态分析结果,对该静态分析结果所解析得到的代码缺陷可能与对历史版本进行分析得到的代码缺陷属于同一个代码缺陷,也即属于重复缺陷,但可能因为在对目标代码进行改动的过程中,导致该代码缺陷在目标代码中的位置有变化,从而导致两次分析所获得的缺陷信息不同。例如,假设目标代码的版本1有100行,版本2是在版本1的基础上,在第20行和21行代码间增加了20行代码,一共有120行;在版本1的第50行有个代码缺陷a,由于版本2相对于版本1只是增加了20行代码,版本2中的代码缺陷a可能仍然存在,但是其位置则从第50行变为了第70行;因此,对两个版本的目标代码进行分析所获得的代码缺陷a的缺陷信息中,至少代码所在行这项信息会是不同的,连带的可能也会导致其他一些信息项也会不同。
为避免用户重复处理这种因代码改动导致的重复缺陷而浪费时间,在本实施方式中,可以排查出可能因代码改动而导致的重复缺陷,将重复缺陷的缺陷状态标记为疑似重复状态,使得用户在进行缺陷排查时,可以先排查被标记为疑似重复状态的缺陷是否真的重复,加快排产重复缺陷的速度,避免对重复缺陷进行重复处理而浪费时间。
对于解析得到的各个代码缺陷中的任意一个代码缺陷(以下称为第二目标代码缺陷以示区分),可以检测该第二目标代码缺陷是否和代码缺陷列表中的代码缺陷属于因代码改动导致的重复缺陷。以下为示区分,采用第三目标代码缺陷表示代码缺陷列表中的任意一个代码缺陷。
检测第二目标代码缺陷是否和代码缺陷列表中的代码缺陷属于因代码改动导致的重复缺陷的方式有很多种,在本实施方式中并不做限制。
步骤S402,若确定第二目标代码缺陷和第三目标代码缺陷属于因代码改动导致的重复缺陷,则将第二目标代码缺陷的缺陷信息存储至代码缺陷列表,并将第二目标代码缺陷在代码缺陷列表中的缺陷状态标记为疑似重复状态,以及将第三目标代码缺陷在代码缺陷列表中的缺陷状态更改为疑似重复状态;
在确定第二目标代码缺陷与第三目标代码缺陷属于因代码改动导致的重复缺陷的情况下,通过将第二目标代码缺陷与第三目标代码缺陷在代码缺陷列表中的缺陷状态均改为疑似重复状态,可以使得用户通过查阅代码缺陷列表,快速地排查这两个代码缺陷是否为重复缺陷,从而避免在这两个代码缺陷确实属于重复缺陷的情况下对这两个代码缺陷进行重复处理而浪费时间。
步骤S403,若确定第二目标代码缺陷和代码缺陷列表中的任意一个代码缺陷均不属于因代码改动导致的重复缺陷,则将第二目标代码缺陷的缺陷信息存储至代码缺陷列表,并将第二目标代码缺陷在代码缺陷列表中的缺陷状态标记为未处理状态。
在确定第二目标代码缺陷和代码缺陷列表中的任意一个代码缺陷均不属于因代码改动导致的重复缺陷的情况下,通过将该第二目标代码缺陷在代码缺陷列表中的缺陷状态标记为未处理状态,使得用户能够通过查阅代码缺陷列表快速地获知哪些代码缺陷还未处理,进而进一步提高用户对代码缺陷的排查效率。
在一可行实施方式中,步骤S402包括:
步骤S4021,将第二目标代码缺陷的缺陷信息中的各项信息分别与第三目标代码缺陷的缺陷信息中的相同项信息进行匹配;
代码缺陷的缺陷信息中包括多项信息,例如源文件路径、缺陷所在行、缺陷所在列以及缺陷详细描述信息等。将第二目标代码缺陷的缺陷信息中的各项信息分别与第三目标代码缺陷的缺陷信息中的相同项信息进行匹配,例如,将第二目标代码缺陷的源文件路径与第三目标代码缺陷的源文件路径进行匹配,将第二目标代码缺陷的代码所在行与第三目标代码缺陷的代码所在行进行匹配等。
步骤S4022,根据匹配结果确定第二目标代码缺陷的缺陷信息中与第三目标代码缺陷的缺陷信息中匹配一致的目标信息项,将各目标信息项对应预设的权重进行求和,得到第二目标代码缺陷与第三目标代码缺陷之间的匹配值;
匹配得到的结果是第一目标代码缺陷的缺陷信息中的各项信息是否与第三目标代码缺陷的缺陷信息中对应信息项的信息匹配一致。根据该匹配结果,可以确定第二目标代码缺陷的缺陷信息中与第三目标代码缺陷的缺陷信息中匹配一致的信息项(以下称为目标信息项以示区分)。例如,假设代码缺陷的缺陷信息中包括a、b、c和d四项信息,匹配结果是第二目标代码缺陷的a项信息与第三目标代码缺陷的a项信息匹配不一致,第二目标代码缺陷的b项信息与第三目标代码缺陷的b项信息匹配一致,第二目标代码缺陷的c项信息与第三目标代码缺陷的c项信息匹配一致,第二目标代码缺陷的d项信息与第三目标代码缺陷的d项信息匹配一致,那么目标信息项包括b、c和d三项;假设a、b、c和d四个信息项对应预设的权重分别为w1、w2、w3和w4,那么第二目标代码缺陷与第三目标代码缺陷之间的匹配值为:b*w2+c*w3+d*w4。
步骤S4023,若匹配值大于预设阈值,则确定第二目标代码缺陷和第三目标代码缺陷属于因代码改动导致的重复缺陷;
步骤S4024,若匹配值小于或等于预设阈值,则确定第二目标代码缺陷是和第三目标代码缺陷不属于因代码改动导致的重复缺陷。
预设阈值可以根据需要进行设置。当第二目标代码缺陷和第三目标代码缺陷之间的匹配值大于该预设阈值时,说明两个代码缺陷很有可能重复缺陷,此时,可以将第二目标代码缺陷和第三目标代码缺陷在代码缺陷列表中的缺陷状态标记为疑似重复状态,从而便于用户快速排查两个缺陷是否真的重复,从而避免重复处理这两个重复缺陷而浪费时间。当第二目标代码缺陷和第三目标代码缺陷之间的匹配值小于或等于该预设阈值时,说明两个代码缺陷是重复缺陷的可能性很小,此时,可以将第二目标代码缺陷在代码缺陷列表中的缺陷状态标记为未处理状态,以便于用户从代码缺陷列表中快速查找到未处理的代码缺陷进行处理,提高用户对代码缺陷的排查效率。
在一可行实施方式中,在缺陷状态的取值范围至少包括两种状态的情况下,步骤S60之前,还包括:
步骤A10,检测目标状态变更次序是否符合预设的合法状态变更次序,其中,目标状态变更次序是指将缺陷状态从代码缺陷列表中第一目标代码缺陷的缺陷状态变更为目标缺陷状态的变更次序;
为避免用户对代码缺陷的状态变更有误而导致代码缺陷列表中缺陷状态的可信度不高,在本实施方式中,可以预先设置合法状态变更次序。例如,可以设置合法状态变更次序为:未处理状态/疑似重复状态->正在处理状态->误报状态/已修复状态,也即,不能够按照箭头所指方向的反方向来变更状态,例如,将已修复状态变更为正在处理状态或未处理状态是不符合该合法状态变更次序的。
步骤A20,若目标状态变更次序符合合法状态变更次序,则执行步骤S60;
步骤A30,若目标状态变更次序不符合合法状态变更次序,则得到变更失败的变更结果。
可以将变更失败的变更结果输出,以便于用户直观地了解本次状态变更失败。
进一步地,基于上述第一和/或第二实施例,提出本申请代码静态分析结果管理方法第三实施例,在本实施例中,步骤S40之后,还包括:
步骤B10,当接收到请求端发送的针对目标代码的缺陷信息查询请求后,从代码缺陷列表中获取缺陷信息查询请求所请求的缺陷信息;
本实施例中,代码静态分析结果管理方法的执行主体可以是服务器,请求端可以是客户端或浏览器。与服务器相应设置的客户端或web应用中,可以提供缺陷信息的查询服务,用户基于该服务,在客户端或运行web应用的浏览器中触发针对目标代码的缺陷信息查询请求。请求端将缺陷信息查询请求发送给服务器。
当接收到缺陷信息查询请求后,可以从代码缺陷列表中获取该缺陷信息查询请求所请求的缺陷信息。例如,在一实施方式中,该缺陷信息查询请求携带代码缺陷的编号,通过该编号在代码缺陷列表中进行查表,即可获得该代码缺陷所对应的缺陷信息。
步骤B20,将获取到的缺陷信息返回给请求端,以供请求端输出所接收到的缺陷信息,其中,请求端为客户端或浏览器。
请求端在接收到缺陷信息后,可以将缺陷信息进行输出,使得用户能够更加方便地查阅到各种静态分析工具对各种代码进行分析所获得的缺陷信息,从而更进一步地提高了用户对代码缺陷的排查效率。
进一步地,基于上述第一、第二和/或第三实施例,提出本申请代码静态分析结果管理方法第四实施例,在本实施例中,步骤S40之后,还包括:
步骤C10,当接收到请求端发送的针对目标代码的缺陷信息导出请求后,从代码缺陷列表中获取缺陷信息导出请求所请求的缺陷信息;
本实施例中,代码静态分析结果管理方法的执行主体可以是服务器,请求端可以是客户端或浏览器。与服务器相应设置的客户端或web应用中,可以提供缺陷信息的导出服务,用户基于该服务,在客户端或运行web应用的浏览器中触发针对目标代码的缺陷信息导出请求。请求端将缺陷信息查询请求发送给服务器。
步骤C20,从缺陷信息导出请求中提取导出文件格式;
步骤C30,将获取到的缺陷信息按照导出文件格式生成缺陷信息文件;
缺陷信息导出请求中还可以携带导出文件格式,也即用户可以根据需要选取采用哪种格式导出缺陷信息。将缺陷信息按照导出文件格式生成缺陷信息文件的具体实施方式在此不做限制。
步骤C40,将缺陷信息文件返回给请求端,以供请求端输出缺陷信息文件,其中,请求端为客户端或浏览器。
请求端在接收到缺陷信息文件后,可以将缺陷信息文件进行输出,使得用户能够更加方便地查阅到各种静态分析工具对各种代码进行分析所获得的缺陷信息,从而更进一步地提高了用户对代码缺陷的排查效率。
在一实施方式中,代码静态分析结果方法的执行主体可以是服务器,服务器中可以部署如图3所示的框架,该框架中包括结果分析模块、数据处理模块以及数据库三个模块组成,http请求处理模块及其他基本功能可由标准的WEB应用框架提供。
静态分析结果可由其他服务器执行相关的静态分析工具生成。http请求处理模块在接收到静态分析结果或者用户请求后进行请求解析,然后调用结果分析模块或者数据处理模块进行后续处理,最后把结果返回给请求方;
结果分析模块负责对静态分析结果进行二次处理,比如判断静态分析结果对应的静态分析工具、解析静态分析结果中的缺陷信息、将缺陷信息存储至代码缺陷列表;
数据处理模块负责响应用户的数据请求,比如获取某种静态分析工具已分析的所有代码缺陷的缺陷信息、标记某条代码缺陷的缺陷状态、按照某种标准格式导出某种静态分析工具已分析的所有代码缺陷的缺陷信息;
数据库负责对代码缺陷列表中的数据进行存储、查询、修改等操作。
在一可行实施方式中,用户通过服务器提供的接口进行静态分析结果提交的基本交互流程如图4所示。用户通过服务器提供的统一的静态分析结果提交接口向服务器发起请求,将静态分析结果发送到服务器;http请求处理模块在接收到该请求后,调用结果分析模块对静态分析结果进行分析,如判断使用的静态分析工具、提取有效的代码缺陷的缺陷信息、将缺陷信息存储至数据库中的代码缺陷列表。
在一可行实施方式中,用户通过浏览器访问服务器查阅代码缺陷列表的基本交互流程如图5所示。代码缺陷列表的展示主要是通过表单的形式在浏览器中进行显示;用户向服务器发起展示请求,http请求处理模块接受到请求后调用数据处理模块的缺陷列表查询接口进行处理,并将处理结果返回给浏览器进行显示。不同的静态分析工具所分析得到的代码缺陷的缺陷信息可以存储在数据库中不同的数据表(代码缺陷列表)中。数据处理模块的缺陷列表查询接口主要处理以下事项:根据请求信息,确定待查询的是哪种静态分析工具分析的代码缺陷(即数据表);根据请求信息,确定待查询的代码缺陷条目数量以及起始位置(即分页信息);从数据表中按照分页信息进行代码缺陷列表的查询,然后将查询结果返回给上一层处理单元。
在一可行实施方式中,用户通过浏览器访问服务器并对某条代码缺陷进行状态标记的基本交互流程如图6所示。用户通过浏览器对某一条代码缺陷的状态进行变更,变更后点击确定按钮即可向服务器发起缺陷状态变更请求;http请求处理模块在接收到用户发起的缺陷状态变更请求后,调用数据处理模块的缺陷状态变更接口进行缺陷状态变更,并把变更结果返回给http请求处理模块再返回给浏览器;数据处理模块在处理缺陷状态变更时,需要先对缺陷状态的变更进行有效性判断,状态的变更只能按照未处理/疑似重复->正在处理->误报/已修复的顺序进行变更,如果状态变更有效,将该缺陷的状态存储到数据库中,并返回最新状态;如果状态变更无效,则直接返回错误消息。
在一可行实施方式中,用户通过浏览器访问服务器并导出代码缺陷列表的基本交互流程如图7所示。用户向服务器发起缺陷列表导出请求,请求信息中包括用户需要的缺陷列表属于哪种静态分析工具和期望的文件格式(如xlsx、json等);http请求处理模块在接收到用户的导出请求时,调用数据处理模块的缺陷列表导出接口进行导出,并接口的返回结果(用户期望的文件或者错误信息)返回给浏览器。数据处理模块的缺陷列表导出接口主要处理以下事项:判断是否支持用户期望的文件格式,如果不支持则返回错误信息;判断用户期望的缺陷列表是否存在,如果不存在则返回错误信息;根据用户期望的缺陷列表,从数据库中查询其所有缺陷,并把它们按照用户期望的文件格式进行重新编排形成文件,然后返回该文件。
基于上述实施方式中提供的代码静态分析结果管理方案,用户在处理代码缺陷时,不需要再对照文本文档或者控制台输出的代码分析结果进行逐条处理,而是通过浏览器访问服务器以表格或者表单的形式进行显示并逐条处理,且处理完成之后能即时更新代码缺陷的状态。并且,使用服务器对代码缺陷进行统一管理,用户在访问服务器时使用的是同一个数据源,可有效避免多个用户同时处理相同的代码缺陷,提升代码缺陷的排查效率;提供的服务器兼容多种静态分析工具,提升代码缺陷的扫描覆盖率;服务器提供统一的静态分析结果提交接口,便于将该流程集成到jenkins(是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成)流水线中进行自动化处理;服务器提供导出功能,方便用户按照自己的需求将代码缺陷列表导出成特定的标准格式的文件。
此外,本申请实施例还提出一种计算机可读存储介质,存储介质上存储有代码静态分析结果管理程序,代码静态分析结果管理程序被处理器执行时实现如下的代码静态分析结果管理方法的步骤。
本申请电子设备和计算机可读存储介质各实施例,均可参照本申请代码静态分析结果管理方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本申请各个实施例的方法。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (11)
1.一种代码静态分析结果管理方法,其特征在于,所述代码静态分析结果管理方法包括以下步骤:
获取目标代码对应的静态分析结果;
对所述静态分析结果进行扫描并随扫描进程实时确定所述静态分析结果对应的静态分析工具;
通过确定出的所述静态分析工具对应预设的解析规则对所述静态分析结果进行解析,得到所述目标代码的缺陷信息;
将解析得到的所有缺陷信息实时存储至代码缺陷列表,以供查阅。
2.如权利要求1所述的代码静态分析结果管理方法,其特征在于,所述静态分析结果中携带有不同静态分析工具对应的标识信息,所述对所述静态分析结果进行扫描并随扫描进程实时确定所述静态分析结果对应的静态分析工具包括:
对所述静态分析结果进行扫描,根据扫描到的所述标识信息实时确定所述静态分析结果对应的第一静态分析工具。
3.如权利要求1所述的代码静态分析结果管理方法,其特征在于,所述代码缺陷列表中包括各条缺陷信息分别对应的代码缺陷的缺陷状态,缺陷状态的取值范围至少包括未处理状态、疑似重复状态、正在处理状态、误报状态和已修复状态中的任意两种。
4.如权利要求3所述的代码静态分析结果管理方法,其特征在于,所述代码静态分析结果管理方法还包括:
接收针对所述目标代码的缺陷状态变更请求,所述缺陷状态变更请求包括请求变更状态的第一目标代码缺陷和对应的目标缺陷状态;
将所述代码缺陷列表中所述第一目标代码缺陷的缺陷状态变更为所述目标缺陷状态;
将对所述第一目标代码缺陷进行状态变更的变更结果返回给发送所述缺陷状态变更请求的请求端,以供所述请求端输出所述变更结果。
5.如权利要求3所述的代码静态分析结果管理方法,其特征在于,所述将解析得到的缺陷信息存储至代码缺陷列表的步骤包括:
检测所述第二目标代码缺陷是否和第三目标代码缺陷属于因代码改动导致的重复缺陷,其中,所述第二目标代码缺陷是解析得到的各个代码缺陷中的任意一个代码缺陷,所述第三目标代码缺陷为所述代码缺陷列表中的任意一个代码缺陷;
若确定所述第二目标代码缺陷和所述第三目标代码缺陷属于因代码改动导致的重复缺陷,则将所述第二目标代码缺陷的缺陷信息存储至所述代码缺陷列表,并将所述第二目标代码缺陷在所述代码缺陷列表中的缺陷状态标记为疑似重复状态,以及将所述第三目标代码缺陷在所述代码缺陷列表中的缺陷状态更改为疑似重复状态;
若确定所述第二目标代码缺陷和所述代码缺陷列表中的任意一个代码缺陷均不属于因代码改动导致的重复缺陷,则将所述第二目标代码缺陷的缺陷信息存储至所述代码缺陷列表,并将所述第二目标代码缺陷在所述代码缺陷列表中的缺陷状态标记为未处理状态。
6.如权利要求5所述的代码静态分析结果管理方法,其特征在于,所述检测所述第二目标代码缺陷是否和第三目标代码缺陷属于因代码改动导致的重复缺陷的步骤包括:
将所述第二目标代码缺陷的缺陷信息中的各项信息分别与第三目标代码缺陷的缺陷信息中的相同项信息进行匹配;
根据匹配结果确定所述第二目标代码缺陷的缺陷信息中与所述第三目标代码缺陷的缺陷信息中匹配一致的目标信息项,将各所述目标信息项对应预设的权重进行求和,得到所述第二目标代码缺陷与所述第三目标代码缺陷之间的匹配值;
若所述匹配值大于预设阈值,则确定所述第二目标代码缺陷和所述第三目标代码缺陷属于因代码改动导致的重复缺陷;
若所述匹配值小于或等于所述预设阈值,则确定所述第二目标代码缺陷是和所述第三目标代码缺陷不属于因代码改动导致的重复缺陷。
7.如权利要求4所述的代码静态分析结果管理方法,其特征在于,所述将所述代码缺陷列表中所述第一目标代码缺陷的缺陷状态变更为所述目标缺陷状态的步骤之前,还包括:
检测目标状态变更次序是否符合预设的合法状态变更次序,其中,所述目标状态变更次序是指将缺陷状态从所述代码缺陷列表中所述第一目标代码缺陷的缺陷状态变更为所述目标缺陷状态的变更次序;
若所述目标状态变更次序符合所述合法状态变更次序,则执行所述将所述代码缺陷列表中所述第一目标代码缺陷的缺陷状态变更为所述目标缺陷状态的步骤;
若所述目标状态变更次序不符合所述合法状态变更次序,则得到变更失败的变更结果。
8.如权利要求1所述的代码静态分析结果管理方法,其特征在于,所述将解析得到的所有缺陷信息实时存储至代码缺陷列表的步骤之后,还包括:
当接收到请求端发送的针对所述目标代码的缺陷信息查询请求后,从所述代码缺陷列表中获取所述缺陷信息查询请求所请求的缺陷信息;
将获取到的缺陷信息返回给所述请求端,以供所述请求端输出所接收到的缺陷信息,其中,所述请求端为客户端或浏览器。
9.如权利要求1至8中任一项所述的代码静态分析结果管理方法,其特征在于,所述将解析得到的所有缺陷信息实时存储至代码缺陷列表的步骤之后,还包括:
当接收到请求端发送的针对所述目标代码的缺陷信息导出请求后,从所述代码缺陷列表中获取所述缺陷信息导出请求所请求的缺陷信息;
从所述缺陷信息导出请求中提取导出文件格式;
将获取到的缺陷信息按照所述导出文件格式生成缺陷信息文件;
将所述缺陷信息文件返回给所述请求端,以供所述请求端输出所述缺陷信息文件,其中,所述请求端为客户端或浏览器。
10.一种电子设备,其特征在于,所述电子设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的代码静态分析结果管理程序,所述代码静态分析结果管理程序被所述处理器执行时实现如权利要求1至9中任一项所述的代码静态分析结果管理方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有代码静态分析结果管理程序,所述代码静态分析结果管理程序被处理器执行时实现如权利要求1至9中任一项所述的代码静态分析结果管理方法的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211248336.0A CN117909205A (zh) | 2022-10-12 | 2022-10-12 | 代码静态分析结果管理方法、设备及可读存储介质 |
PCT/CN2023/105401 WO2024078062A1 (zh) | 2022-10-12 | 2023-06-30 | 代码静态分析结果管理方法、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211248336.0A CN117909205A (zh) | 2022-10-12 | 2022-10-12 | 代码静态分析结果管理方法、设备及可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117909205A true CN117909205A (zh) | 2024-04-19 |
Family
ID=90668669
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211248336.0A Pending CN117909205A (zh) | 2022-10-12 | 2022-10-12 | 代码静态分析结果管理方法、设备及可读存储介质 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117909205A (zh) |
WO (1) | WO2024078062A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8806441B2 (en) * | 2009-06-29 | 2014-08-12 | International Business Machines Corporation | Static code analysis |
CN103713998A (zh) * | 2013-11-07 | 2014-04-09 | 北京安码科技有限公司 | 一种可扩展的在线静态代码缺陷分析方法 |
CN108304327B (zh) * | 2018-02-02 | 2021-01-19 | 平安证券股份有限公司 | 静态代码扫描结果处理方法和装置 |
CN114090462B (zh) * | 2021-12-07 | 2023-04-18 | 上海复深蓝软件股份有限公司 | 软件重复缺陷识别方法、装置、计算机设备及存储介质 |
-
2022
- 2022-10-12 CN CN202211248336.0A patent/CN117909205A/zh active Pending
-
2023
- 2023-06-30 WO PCT/CN2023/105401 patent/WO2024078062A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024078062A1 (zh) | 2024-04-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112491602B (zh) | 行为数据的监控方法、装置、计算机设备及介质 | |
CN111563051B (zh) | 基于爬虫的数据核验方法、装置、计算机设备及存储介质 | |
CN110532461B (zh) | 信息平台推送方法、装置、计算机设备及存储介质 | |
CN111813845B (zh) | 基于etl任务的增量数据抽取方法、装置、设备及介质 | |
CN112307374A (zh) | 基于待办事项的跳转方法、装置、设备及存储介质 | |
CN112667697A (zh) | 结合rpa和ai的房产信息的获取方法及装置 | |
CN111522714A (zh) | 日志查询方法、装置、电子设备及存储介质 | |
US20070150477A1 (en) | Validating a uniform resource locator ('URL') in a document | |
CN115080827A (zh) | 一种敏感数据处理方法及装置 | |
CN110838929B (zh) | 系统错误排查方法和系统错误排查装置 | |
CN112291085B (zh) | 一种故障定位方法、装置、设备及介质 | |
CN114003818A (zh) | 页面推荐方法、装置、服务器及存储介质 | |
CN110334019B (zh) | 一种测试方法、装置及可读存储介质 | |
CN112632528A (zh) | 威胁情报生成方法、设备、存储介质及装置 | |
CN115801455B (zh) | 一种基于网站指纹的仿冒网站检测方法及装置 | |
CN117076491A (zh) | 一种数据处理方法、存储介质与设备 | |
CN117909205A (zh) | 代码静态分析结果管理方法、设备及可读存储介质 | |
CN111475405A (zh) | 回归测试的方法、装置、计算机设备及存储介质 | |
CN112558950B (zh) | 系统接口生成方法及装置 | |
CN115357899A (zh) | 基于iast技术检测存储型漏洞的方法及系统 | |
CN115455425A (zh) | 防护补丁生成方法、系统、设备及存储介质 | |
CN113792087A (zh) | 数据分析方法、装置、电子设备以及计算机可读存储介质 | |
CN109241537B (zh) | 信息处理方法及信息处理装置 | |
CN112711574A (zh) | 数据库安全性检测方法、装置、电子设备及介质 | |
CN111953813A (zh) | Ip地址的识别方法、系统、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |