CN118296603A - 静态代码扫描方法、装置、存储介质及电子设备 - Google Patents
静态代码扫描方法、装置、存储介质及电子设备 Download PDFInfo
- Publication number
- CN118296603A CN118296603A CN202410464454.8A CN202410464454A CN118296603A CN 118296603 A CN118296603 A CN 118296603A CN 202410464454 A CN202410464454 A CN 202410464454A CN 118296603 A CN118296603 A CN 118296603A
- Authority
- CN
- China
- Prior art keywords
- target
- plug
- scanning
- code
- package
- 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
- 238000000034 method Methods 0.000 title claims abstract description 57
- 230000003068 static effect Effects 0.000 title claims abstract description 49
- 238000012545 processing Methods 0.000 claims description 25
- 230000002159 abnormal effect Effects 0.000 claims description 24
- 230000008569 process Effects 0.000 claims description 17
- 238000004590 computer program Methods 0.000 claims description 12
- 230000003993 interaction Effects 0.000 abstract description 8
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000011161 development Methods 0.000 description 28
- 230000001360 synchronised effect Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000006978 adaptation Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种静态代码扫描方法、装置、存储介质及电子设备,涉及金融科技领域或其他相关领域。该方法包括:基于目标客户端接收目标对象的代码扫描请求,并依据代码扫描请求中的参数信息确定待扫描的代码文件;获取目标客户端的网络连接信息,并依据网络连接信息确定待对待扫描的代码文件进行扫描的目标端,其中,网络连接信息表征目标客户端是否存在网络支持,目标端为以下之一:目标客户端、目标客户端对应的服务器端;基于目标端对待扫描的代码文件进行扫描,得到扫描结果。本发明解决了现有技术中进行静态代码扫描时,客户端和服务器端需要网络的支持进行多次交互才能得到扫描结果,存在代码扫描局限性较高的技术问题。
Description
技术领域
本发明涉及金融科技领域或其他相关领域,具体而言,涉及一种静态代码扫描方法、装置、存储介质及电子设备。
背景技术
静态代码扫描是指不运行代码,仅通过分析检查源程序的语法、结构、过程、接口等的正确性,找出代码中隐藏的错误和缺陷。现有技术中的代码扫描过程主要是客户端连接服务器端扫描,客户端和服务器端需要网络的支持进行多次交互才能得到扫描结果,代码扫描局限性较高,需要的流程比较长,扫描效率比较低,用户无法快速获取到结果。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种静态代码扫描方法、装置、存储介质及电子设备,以至少解决现有技术中进行静态代码扫描时,客户端和服务器端需要网络的支持进行多次交互才能得到扫描结果,存在代码扫描局限性较高的技术问题。
根据本发明实施例的一个方面,提供了一种静态代码扫描方法,包括:基于目标客户端接收目标对象的代码扫描请求,并依据代码扫描请求中的参数信息确定待扫描的代码文件;获取目标客户端的网络连接信息,并依据网络连接信息确定待对待扫描的代码文件进行扫描的目标端,其中,网络连接信息表征目标客户端是否存在网络支持,目标端为以下之一:目标客户端、目标客户端对应的服务器端;基于目标端对待扫描的代码文件进行扫描,得到扫描结果。
进一步地,依据网络连接信息确定待对待扫描的代码文件进行扫描的目标端,包括:若网络连接信息表征目标客户端不存在网络支持,则将目标客户端作为目标端;若网络连接信息表征目标客户端存在网络支持,则依据参数信息中的业务需求信息确定目标端。
进一步地,在目标端为目标客户端的情况下,基于目标端对待扫描的代码文件进行扫描,得到扫描结果,包括:基于目标客户端启动目标插件,并依据目标插件的扫描规则对待扫描的代码文件进行扫描分析,得到目标报表,其中,目标报表用于记录不满足扫描规则的异常代码的代码信息;依据目标报表确定扫描结果。
进一步地,在基于目标端对待扫描的代码文件进行扫描,得到扫描结果之后,该方法还包括:基于目标客户端依据目标报表中记录的异常代码的代码信息对待扫描的代码文件进行代码定位处理,得到异常代码在待扫描的代码文件中的目标位置;基于目标客户端向目标对象展示异常代码在待扫描的代码文件中的目标位置。
进一步地,在基于目标客户端接收目标对象的代码扫描请求之前,该方法还包括:初始化目标客户端的目标引擎,以将目标客户端与目标插件进行关联;配置目标客户端的加载信息,以在目标引擎启动时,基于加载信息加载目标插件的插件包,其中,加载信息中至少包括插件包的路径信息;当检测到目标客户端存在网络支持时,从目标客户端对应的服务器端获取第一插件包,并依据第一插件包判断是否对目标插件的插件包进行处理,得到判断结果。
进一步地,依据第一插件包判断是否对目标插件的插件包进行处理,得到判断结果,包括:对第一插件包和目标插件的插件包进行比对,得到比对结果;若比对结果表征第一插件包和目标插件的插件包相同,或者,若比对结果表征第一插件包的版本低于目标插件的插件包的版本,则将不对目标插件的插件包进行处理作为判断结果;若比对结果表征第一插件包的版本高于目标插件的插件包的版本,则将对目标插件的插件包进行处理作为判断结果。
进一步地,该方法还包括:基于预设周期,将目标客户端对应的服务器端的目标配置信息同步至目标客户端,其中,目标配置信息至少包括代码语言配置信息、代码扫描范围信息以及数据库配置信息。
根据本发明实施例的另一方面,还提供了一种静态代码扫描装置,包括:接收模块,用于基于目标客户端接收目标对象的代码扫描请求,并依据代码扫描请求中的参数信息确定待扫描的代码文件;确定模块,用于获取目标客户端的网络连接信息,并依据网络连接信息确定待对待扫描的代码文件进行扫描的目标端,其中,网络连接信息表征目标客户端是否存在网络支持,目标端为以下之一:目标客户端、目标客户端对应的服务器端;处理模块,用于基于目标端对待扫描的代码文件进行扫描,得到扫描结果。
根据本发明实施例的另一方面,还提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现上述的静态代码扫描方法。
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的静态代码扫描方法。
根据本发明实施例的另一方面,还提供了一种电子设备,该电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的静态代码扫描方法。
在本发明实施例中,首先基于目标客户端接收目标对象的代码扫描请求,并依据代码扫描请求中的参数信息确定待扫描的代码文件,然后获取目标客户端的网络连接信息,并依据网络连接信息确定待对待扫描的代码文件进行扫描的目标端,然后基于目标端对待扫描的代码文件进行扫描,得到扫描结果。其中,网络连接信息表征目标客户端是否存在网络支持,目标端为以下之一:目标客户端、目标客户端对应的服务器端。
在上述过程中,可以基于目标客户端实现在无网络的环境上进行静态代码扫描,能够在不连接服务器端时进行代码扫描,并且及时得到扫描结果,降低了代码扫描的局限性,缩短了扫描流程,为开发人员在编写代码时解决代码质量和安全问题提供了便利,提高了代码扫描效率,从而能够提高开发效率。
由此可见,通过本发明的技术方案,达到了能够在无网络的环境上进行静态代码扫描的目的,从而实现了降低代码扫描的局限性,提高代码扫描效率的技术效果,进而解决了现有技术中进行静态代码扫描时,客户端和服务器端需要网络的支持进行多次交互才能得到扫描结果,存在代码扫描局限性较高的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的静态代码扫描方法的流程图;
图2是根据本发明实施例的一种可选的目标插件的插件包处理的流程示意图;
图3是根据本发明实施例的一种可选的静态代码扫描装置的示意图;
图4是根据本发明实施例的一种可选的电子设备的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
需要说明的是,本发明所涉及的相关信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。例如,本***和相关用户或机构间设置有接口,在获取相关信息之前,需要通过接口向前述的用户或机构发送获取请求,并在接收到前述的用户或机构反馈的同意信息后,获取相关信息。
实施例1
根据本发明实施例,提供了一种静态代码扫描方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
图1是根据本发明实施例的一种可选的静态代码扫描方法的流程图,如图1所示,该方法包括如下步骤:
步骤S101,基于目标客户端接收目标对象的代码扫描请求,并依据代码扫描请求中的参数信息确定待扫描的代码文件。
在上述步骤中,可以将应用***、处理器、电子设备等装置作为执行主体,可选的,以静态代码扫描***为执行主体,***基于目标客户端接收目标对象的代码扫描请求,其中,目标客户端可以是预先构建的本地扫描客户端。
可选地,在本发明实施例中,基于代码扫描本地集成开发环境核心解析引擎构建了一个适用于Windows操作***的本地扫描客户端,使用方式是下载语言包等介质并安装到适配的开发工具内。编码语言主要采用Java语言开发,由Java FX框架及框架内置的FXML前端展示组件构成,将外部依赖嵌入至应用工具包内。
可选地,基于目标客户端可以接收目标对象(即用户,如开发人员)的代码扫描请求,并依据代码扫描请求中的参数信息确定出待扫描的代码文件。例如,目标客户端可以从用户的操作和配置的信息中获得参数信息,例如,用户在集成开发环境右键选择的文件或目录、是否需要编译、是否需要扫描程序对应的测试脚本等参数信息,例如,可以基于用户输入的参数生成代码扫描命令。
需要说明的是,本方案具有轻量化、易配置、完全本地化的特点,代码扫描过程可适配代码扫描平台,能够在无网络的环境下,不连接服务器进行扫描,并且,能够满足快速获得扫描结果的需求。
步骤S102,获取目标客户端的网络连接信息,并依据网络连接信息确定待对待扫描的代码文件进行扫描的目标端,其中,网络连接信息表征目标客户端是否存在网络支持,目标端为以下之一:目标客户端、目标客户端对应的服务器端。
可选地,通过获取目标客户端的网络连接信息,可以依据网络连接信息确定出待对待扫描的代码文件进行扫描的目标端是目标客户端或者目标客户端对应的服务器端。
在一种可选的实施例中,在依据网络连接信息确定待对待扫描的代码文件进行扫描的目标端的过程中,若网络连接信息表征目标客户端不存在网络支持,例如,没有网络,无法进行网络连接,则可以确定出待对待扫描的代码文件进行扫描的目标端是目标客户端;若网络连接信息表征目标客户端存在网络支持,例如,有网络,能够进行网络连接,则可以依据参数信息中的业务需求信息确定出目标端。
例如,在依据参数信息中的业务需求信息确定目标端的过程中,若业务需求信息表征目标对象对扫描结果的获得速度期望值小于预设值,例如,预设值为5秒,获得速度期望值为1秒,表明用户有快速获得扫描结果的需求,则可以确定出待对待扫描的代码文件进行扫描的目标端是目标客户端;若业务需求信息表征目标对象对扫描结果的获得速度期望值大于等于预设值,则可以将目标客户端对应的服务器端作为待对待扫描的代码文件进行扫描的目标端。
步骤S103,基于目标端对待扫描的代码文件进行扫描,得到扫描结果。
可选地,在确定出目标端之后,可以基于目标端对待扫描的代码文件进行扫描,得到扫描结果,例如,有歧义的嵌套语句、错误的递归、可能出现的空指针引用等。
在一种可选的实施例中,在目标端为目标客户端的情况下,基于目标端对待扫描的代码文件进行扫描,得到扫描结果,包括:基于目标客户端启动目标插件,并依据目标插件的扫描规则对待扫描的代码文件进行扫描分析,得到目标报表,其中,目标报表用于记录不满足扫描规则的异常代码的代码信息;依据目标报表确定扫描结果。
例如,在目标端为目标客户端的情况下,目标客户端执行代码扫描命令后,检查可被扫描的文件信息,确定出可以被扫描的文件内容,启动目标扫描插件,依据插件的扫描规则对待扫描的代码文件的程序代码进行扫描分析,并进行数据持久化,得到问题列表(即目标报表),然后依据目标报表确定扫描结果,例如,对问题列表中的问题进行解析生成问题明细,问题明细中包含规则ID、规则类型、规则问题描述、违反规则的程序路径以及违反规则的程序行等信息。
基于上述步骤S101至步骤S103所限定的方案,可以获知,在本发明实施例中,首先基于目标客户端接收目标对象的代码扫描请求,并依据代码扫描请求中的参数信息确定待扫描的代码文件,然后获取目标客户端的网络连接信息,并依据网络连接信息确定待对待扫描的代码文件进行扫描的目标端,然后基于目标端对待扫描的代码文件进行扫描,得到扫描结果。其中,网络连接信息表征目标客户端是否存在网络支持,目标端为以下之一:目标客户端、目标客户端对应的服务器端。
容易注意到的是,在上述过程中,可以基于目标客户端实现在无网络的环境上进行静态代码扫描,能够在不连接服务器端时进行代码扫描,并且及时得到扫描结果,降低了代码扫描的局限性,缩短了扫描流程,为开发人员在编写代码时解决代码质量和安全问题提供了便利,提高了代码扫描效率,从而能够提高开发效率。
由此可见,通过本发明的技术方案,达到了能够在无网络的环境上进行静态代码扫描的目的,从而实现了降低代码扫描的局限性,提高代码扫描效率的技术效果,进而解决了现有技术中进行静态代码扫描时,客户端和服务器端需要网络的支持进行多次交互才能得到扫描结果,存在代码扫描局限性较高的技术问题。
在一种可选的实施例中,在基于目标端对待扫描的代码文件进行扫描,得到扫描结果之后,基于目标客户端依据目标报表中记录的异常代码的代码信息对待扫描的代码文件进行代码定位处理,得到异常代码在待扫描的代码文件中的目标位置;基于目标客户端向目标对象展示异常代码在待扫描的代码文件中的目标位置。
可选地,在目标端为目标客户端的情况下,在基于目标端对待扫描的代码文件进行扫描,得到扫描结果之后,基于目标客户端依据目标报表中记录的异常代码的代码信息(如规则ID、规则类型、规则问题描述、违反规则的程序路径以及违反规则的程序行等信息)对待扫描的代码文件进行代码定位处理,得到异常代码在待扫描的代码文件中的目标位置,然后可以基于目标客户端向目标对象展示异常代码在待扫描的代码文件中的目标位置,例如,将问题明细和源代码信息(即被扫描的代码文件)相结合,在源代码中通过代码行信息定位问题,将违反规则问题在源代码绑定并显示在集成开发环境中,还可以将输出结果记录到目标报表中。
需要说明的是,基于目标客户端依据目标报表中记录的异常代码的代码信息对待扫描的代码文件进行代码定位处理,能够满足用户快速获得扫描结果的需求,缩短了扫描流程,为开发人员在编写代码时解决代码质量和安全问题提供了便利,提高了代码扫描效率,从而能够提高开发效率。
在一种可选的实施例中,在基于目标客户端接收目标对象的代码扫描请求之前,初始化目标客户端的目标引擎,以将目标客户端与目标插件进行关联;配置目标客户端的加载信息,以在目标引擎启动时,基于加载信息加载目标插件的插件包,其中,加载信息中至少包括插件包的路径信息;当检测到目标客户端存在网络支持时,从目标客户端对应的服务器端获取第一插件包,并依据第一插件包判断是否对目标插件的插件包进行处理,得到判断结果。
可选地,在基于目标客户端接收目标对象的代码扫描请求之前,首先初始化代码扫描解析引擎,即初始化目标客户端的目标引擎,以将目标客户端与目标插件进行关联,并配置目标客户端的加载信息,以在目标引擎启动时,基于加载信息加载目标插件的插件包,例如,将规则介质放到工具根目录下的插件目录,使代码扫描规则接入扫描客户端,引擎程序启动后加载规则介质,当检测到目标客户端存在网络支持时,从目标客户端对应的服务器端获取第一插件包,并依据第一插件包判断是否对目标插件的插件包进行处理,得到判断结果,例如,可以根据用户设置的连接服务器信息,从目标客户端对应的服务器端中获取扫描插件包、加载适配语言,并对插件包进行分析。
图2是根据本发明实施例的一种可选的目标插件的插件包处理的流程示意图,如图2所示,在一种可选的实施例中,依据第一插件包判断是否对目标插件的插件包进行处理,得到判断结果,包括以下步骤:
步骤S201,对第一插件包和目标插件的插件包进行比对,得到比对结果;
步骤S202,若比对结果表征第一插件包和目标插件的插件包相同,或者,若比对结果表征第一插件包的版本低于目标插件的插件包的版本,则将不对目标插件的插件包进行处理作为判断结果;
步骤S203,若比对结果表征第一插件包的版本高于目标插件的插件包的版本,则将对目标插件的插件包进行处理作为判断结果。
可选地,第一插件包表示服务器端的插件包,目标插件的插件包表示本地集成开发环境的插件包,对比服务器端的插件包和本地集成开发环境的插件包,若插件包在服务器端存在,在集成开发环境不存在,则可以把服务器端的插件包同步到集成开发环境;若插件包在服务器端存在,在集成开发环境也存在,如果服务器端的插件包的版本比集成开发环境的插件包的版本高,则可以把服务器端的插件包同步到集成开发环境,如果服务器端的插件包的版本比集成开发环境的插件包的版本低,则无需处理;若插件包在服务器端不存在,在集成开发环境存在,则无需处理。
需要说明的是,通过对第一插件包和目标插件的插件包进行比对,能够不断完善目标客户端的代码扫描功能,从而提高代码扫描的准确性。
在一种可选的实施例中,基于预设周期,将目标客户端对应的服务器端的目标配置信息同步至目标客户端,其中,目标配置信息至少包括代码语言配置信息、代码扫描范围信息以及数据库配置信息。
可选地,基于预设周期,可以将目标客户端对应的服务器端的目标配置信息同步至目标客户端,例如,同步服务器端的代码扫描配置到集成开发环境,质量配置采用与服务器相同的介质,能够最大程度的与服务器端配置适配。例如,同步服务器端各个代码扫描的语言配置到集成开发环境,每种语言的配置规则同步到集成开发环境中,默认使用服务器端的规则集,同时集成开发环境可以在服务器端的规则集的基础上添加或减少规则。例如,同步服务器端的例外程序清单配置到集成开发环境,不需要扫描的文件或者不需要扫描的规则可以通过例外程序清单进行配置。例如,同步服务器端的扫描限制范围配置到集成开发环境,可以限制进行代码扫描的文件或规则。例如,同步服务器端的扫描数据库配置信息到集成开发环境,便于扫描结构化查询语言的相关规则,可以读取用户配置的数据库信息,通过查询导出数据库的所有存储过程信息,获得项目与数据库之间的关联映射关系,客户端集成开发环境通过关联映射关系可以在扫描结构化查询语言时读取对应的数据库配置信息。
可选地,在同步服务器端的代码扫描配置到集成开发环境之后,对其它流程信息进行配置,例如,指定引擎日志输出流对象、指定引擎进度响应流对象、指定工作目录以及指定外部配置等。
在本发明实施例中,首先基于目标客户端接收目标对象的代码扫描请求,并依据代码扫描请求中的参数信息确定待扫描的代码文件,然后获取目标客户端的网络连接信息,并依据网络连接信息确定待对待扫描的代码文件进行扫描的目标端,然后基于目标端对待扫描的代码文件进行扫描,得到扫描结果。其中,网络连接信息表征目标客户端是否存在网络支持,目标端为以下之一:目标客户端、目标客户端对应的服务器端。
在上述过程中,可以基于目标客户端实现在无网络的环境上进行静态代码扫描,能够在不连接服务器端时进行代码扫描,并且及时得到扫描结果,降低了代码扫描的局限性,缩短了扫描流程,为开发人员在编写代码时解决代码质量和安全问题提供了便利,提高了代码扫描效率,从而能够提高开发效率。
由此可见,通过本发明的技术方案,达到了能够在无网络的环境上进行静态代码扫描的目的,从而实现了降低代码扫描的局限性,提高代码扫描效率的技术效果,进而解决了现有技术中进行静态代码扫描时,客户端和服务器端需要网络的支持进行多次交互才能得到扫描结果,存在代码扫描局限性较高的技术问题。
实施例2
根据本发明实施例,提供了一种静态代码扫描装置的实施例,其中,图3是根据本发明实施例的一种可选的静态代码扫描装置的示意图,如图3所示,该装置包括:接收模块301,用于基于目标客户端接收目标对象的代码扫描请求,并依据代码扫描请求中的参数信息确定待扫描的代码文件;确定模块302,用于获取目标客户端的网络连接信息,并依据网络连接信息确定待对待扫描的代码文件进行扫描的目标端,其中,网络连接信息表征目标客户端是否存在网络支持,目标端为以下之一:目标客户端、目标客户端对应的服务器端;处理模块303,用于基于目标端对待扫描的代码文件进行扫描,得到扫描结果。
在本发明实施例提供的静态代码扫描装置中,通过接收模块301基于目标客户端接收目标对象的代码扫描请求,并依据代码扫描请求中的参数信息确定待扫描的代码文件;确定模块302获取目标客户端的网络连接信息,并依据网络连接信息确定待对待扫描的代码文件进行扫描的目标端,其中,网络连接信息表征目标客户端是否存在网络支持,目标端为以下之一:目标客户端、目标客户端对应的服务器端;处理模块303基于目标端对待扫描的代码文件进行扫描,得到扫描结果。在上述过程中,可以基于目标客户端实现在无网络的环境上进行静态代码扫描,能够在不连接服务器端时进行代码扫描,并且及时得到扫描结果,降低了代码扫描的局限性,缩短了扫描流程,为开发人员在编写代码时解决代码质量和安全问题提供了便利,提高了代码扫描效率,从而能够提高开发效率。达到了能够在无网络的环境上进行静态代码扫描的目的,从而实现了降低代码扫描的局限性,提高代码扫描效率的技术效果,进而解决了现有技术中进行静态代码扫描时,客户端和服务器端需要网络的支持进行多次交互才能得到扫描结果,存在代码扫描局限性较高的技术问题。
需要说明的是,上述的接收模块301、确定模块302以及处理模块303对应于上述实施例中的步骤S101至步骤S103,三个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例1所公开的内容。
可选的,确定模块包括:第一确定模块,用于若网络连接信息表征目标客户端不存在网络支持,则将目标客户端作为目标端;第二确定模块,用于若网络连接信息表征目标客户端存在网络支持,则依据参数信息中的业务需求信息确定目标端。
可选的,处理模块包括:分析模块,用于基于目标客户端启动目标插件,并依据目标插件的扫描规则对待扫描的代码文件进行扫描分析,得到目标报表,其中,目标报表用于记录不满足扫描规则的异常代码的代码信息;第三确定模块,用于依据目标报表确定扫描结果。
可选的,静态代码扫描装置还包括:第一处理模块,用于在基于目标端对待扫描的代码文件进行扫描,得到扫描结果之后,基于目标客户端依据目标报表中记录的异常代码的代码信息对待扫描的代码文件进行代码定位处理,得到异常代码在待扫描的代码文件中的目标位置;展示模块,用于基于目标客户端向目标对象展示异常代码在待扫描的代码文件中的目标位置。
可选的,静态代码扫描装置还包括:第二处理模块,用于在基于目标客户端接收目标对象的代码扫描请求之前,初始化目标客户端的目标引擎,以将目标客户端与目标插件进行关联;配置模块,用于配置目标客户端的加载信息,以在目标引擎启动时,基于加载信息加载目标插件的插件包,其中,加载信息中至少包括插件包的路径信息;判断模块,用于当检测到目标客户端存在网络支持时,从目标客户端对应的服务器端获取第一插件包,并依据第一插件包判断是否对目标插件的插件包进行处理,得到判断结果。
可选的,判断模块包括:比对模块,用于对第一插件包和目标插件的插件包进行比对,得到比对结果;第四确定模块,用于若比对结果表征第一插件包和目标插件的插件包相同,或者,若比对结果表征第一插件包的版本低于目标插件的插件包的版本,则将不对目标插件的插件包进行处理作为判断结果;第五确定模块,用于若比对结果表征第一插件包的版本高于目标插件的插件包的版本,则将对目标插件的插件包进行处理作为判断结果。
可选的,静态代码扫描装置还包括:同步模块,用于基于预设周期,将目标客户端对应的服务器端的目标配置信息同步至目标客户端,其中,目标配置信息至少包括代码语言配置信息、代码扫描范围信息以及数据库配置信息。
实施例3
根据本发明实施例的另一方面,还提供了一种计算机程序产品,包括计算机程序,计算机程序在被处理器执行时实现上述的静态代码扫描方法。
实施例4
根据本发明实施例的另一方面,还提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述的静态代码扫描方法。
实施例5
根据本发明实施例的另一方面,还提供了一种电子设备,其中,图4是根据本发明实施例的一种可选的电子设备的示意图,如图4所示,电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现用于运行程序,其中,程序被设置为运行时执行上述的静态代码扫描方法。处理器执行程序时实现以下步骤:基于目标客户端接收目标对象的代码扫描请求,并依据代码扫描请求中的参数信息确定待扫描的代码文件;获取目标客户端的网络连接信息,并依据网络连接信息确定待对待扫描的代码文件进行扫描的目标端,其中,网络连接信息表征目标客户端是否存在网络支持,目标端为以下之一:目标客户端、目标客户端对应的服务器端;基于目标端对待扫描的代码文件进行扫描,得到扫描结果。
在上述过程中,可以基于目标客户端实现在无网络的环境上进行静态代码扫描,能够在不连接服务器端时进行代码扫描,并且及时得到扫描结果,降低了代码扫描的局限性,缩短了扫描流程,为开发人员在编写代码时解决代码质量和安全问题提供了便利,提高了代码扫描效率,从而能够提高开发效率。达到了能够在无网络的环境上进行静态代码扫描的目的,从而实现了降低代码扫描的局限性,提高代码扫描效率的技术效果,进而解决了现有技术中进行静态代码扫描时,客户端和服务器端需要网络的支持进行多次交互才能得到扫描结果,存在代码扫描局限性较高的技术问题。
可选的,处理器执行程序时还实现以下步骤:若网络连接信息表征目标客户端不存在网络支持,则将目标客户端作为目标端;若网络连接信息表征目标客户端存在网络支持,则依据参数信息中的业务需求信息确定目标端。
可选的,处理器执行程序时还实现以下步骤:基于目标客户端启动目标插件,并依据目标插件的扫描规则对待扫描的代码文件进行扫描分析,得到目标报表,其中,目标报表用于记录不满足扫描规则的异常代码的代码信息;依据目标报表确定扫描结果。
可选的,处理器执行程序时还实现以下步骤:在基于目标端对待扫描的代码文件进行扫描,得到扫描结果之后,基于目标客户端依据目标报表中记录的异常代码的代码信息对待扫描的代码文件进行代码定位处理,得到异常代码在待扫描的代码文件中的目标位置;基于目标客户端向目标对象展示异常代码在待扫描的代码文件中的目标位置。
可选的,处理器执行程序时还实现以下步骤:在基于目标客户端接收目标对象的代码扫描请求之前,初始化目标客户端的目标引擎,以将目标客户端与目标插件进行关联;配置目标客户端的加载信息,以在目标引擎启动时,基于加载信息加载目标插件的插件包,其中,加载信息中至少包括插件包的路径信息;当检测到目标客户端存在网络支持时,从目标客户端对应的服务器端获取第一插件包,并依据第一插件包判断是否对目标插件的插件包进行处理,得到判断结果。
可选的,处理器执行程序时还实现以下步骤:对第一插件包和目标插件的插件包进行比对,得到比对结果;若比对结果表征第一插件包和目标插件的插件包相同,或者,若比对结果表征第一插件包的版本低于目标插件的插件包的版本,则将不对目标插件的插件包进行处理作为判断结果;若比对结果表征第一插件包的版本高于目标插件的插件包的版本,则将对目标插件的插件包进行处理作为判断结果。
可选的,处理器执行程序时还实现以下步骤:基于预设周期,将目标客户端对应的服务器端的目标配置信息同步至目标客户端,其中,目标配置信息至少包括代码语言配置信息、代码扫描范围信息以及数据库配置信息。
本文中的设备可以是服务器、PC、PAD、手机等。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (11)
1.一种静态代码扫描方法,其特征在于,包括:
基于目标客户端接收目标对象的代码扫描请求,并依据所述代码扫描请求中的参数信息确定待扫描的代码文件;
获取所述目标客户端的网络连接信息,并依据所述网络连接信息确定待对所述待扫描的代码文件进行扫描的目标端,其中,所述网络连接信息表征所述目标客户端是否存在网络支持,所述目标端为以下之一:所述目标客户端、所述目标客户端对应的服务器端;
基于所述目标端对所述待扫描的代码文件进行扫描,得到扫描结果。
2.根据权利要求1所述的方法,其特征在于,依据所述网络连接信息确定待对所述待扫描的代码文件进行扫描的目标端,包括:
若所述网络连接信息表征所述目标客户端不存在网络支持,则将所述目标客户端作为所述目标端;
若所述网络连接信息表征所述目标客户端存在网络支持,则依据所述参数信息中的业务需求信息确定所述目标端。
3.根据权利要求1所述的方法,其特征在于,在所述目标端为所述目标客户端的情况下,基于所述目标端对所述待扫描的代码文件进行扫描,得到扫描结果,包括:
基于所述目标客户端启动目标插件,并依据所述目标插件的扫描规则对所述待扫描的代码文件进行扫描分析,得到目标报表,其中,所述目标报表用于记录不满足所述扫描规则的异常代码的代码信息;
依据所述目标报表确定所述扫描结果。
4.根据权利要求3所述的方法,其特征在于,在基于所述目标端对所述待扫描的代码文件进行扫描,得到扫描结果之后,所述方法还包括:
基于所述目标客户端依据所述目标报表中记录的异常代码的代码信息对所述待扫描的代码文件进行代码定位处理,得到所述异常代码在所述待扫描的代码文件中的目标位置;
基于所述目标客户端向所述目标对象展示所述异常代码在所述待扫描的代码文件中的目标位置。
5.根据权利要求1所述的方法,其特征在于,在基于目标客户端接收目标对象的代码扫描请求之前,所述方法还包括:
初始化所述目标客户端的目标引擎,以将所述目标客户端与目标插件进行关联;
配置所述目标客户端的加载信息,以在所述目标引擎启动时,基于所述加载信息加载所述目标插件的插件包,其中,所述加载信息中至少包括所述插件包的路径信息;
当检测到所述目标客户端存在网络支持时,从所述目标客户端对应的服务器端获取第一插件包,并依据所述第一插件包判断是否对所述目标插件的插件包进行处理,得到判断结果。
6.根据权利要求5所述的方法,其特征在于,依据所述第一插件包判断是否对所述目标插件的插件包进行处理,得到判断结果,包括:
对所述第一插件包和所述目标插件的插件包进行比对,得到比对结果;
若所述比对结果表征所述第一插件包和所述目标插件的插件包相同,或者,若所述比对结果表征所述第一插件包的版本低于所述目标插件的插件包的版本,则将不对所述目标插件的插件包进行处理作为所述判断结果;
若所述比对结果表征所述第一插件包的版本高于所述目标插件的插件包的版本,则将对所述目标插件的插件包进行处理作为所述判断结果。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
基于预设周期,将所述目标客户端对应的服务器端的目标配置信息同步至所述目标客户端,其中,所述目标配置信息至少包括代码语言配置信息、代码扫描范围信息以及数据库配置信息。
8.一种静态代码扫描装置,其特征在于,包括:
接收模块,用于基于目标客户端接收目标对象的代码扫描请求,并依据所述代码扫描请求中的参数信息确定待扫描的代码文件;
确定模块,用于获取所述目标客户端的网络连接信息,并依据所述网络连接信息确定待对所述待扫描的代码文件进行扫描的目标端,其中,所述网络连接信息表征所述目标客户端是否存在网络支持,所述目标端为以下之一:所述目标客户端、所述目标客户端对应的服务器端;
处理模块,用于基于所述目标端对所述待扫描的代码文件进行扫描,得到扫描结果。
9.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序在被处理器执行时实现所述权利要求1至7任一项中所述的静态代码扫描方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至7任一项中所述的静态代码扫描方法。
11.一种电子设备,其特征在于,所述电子设备包括一个或多个处理器;存储器,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现用于运行程序,其中,所述程序被设置为运行时执行所述权利要求1至7任一项中所述的静态代码扫描方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410464454.8A CN118296603A (zh) | 2024-04-17 | 2024-04-17 | 静态代码扫描方法、装置、存储介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410464454.8A CN118296603A (zh) | 2024-04-17 | 2024-04-17 | 静态代码扫描方法、装置、存储介质及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118296603A true CN118296603A (zh) | 2024-07-05 |
Family
ID=91679139
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410464454.8A Pending CN118296603A (zh) | 2024-04-17 | 2024-04-17 | 静态代码扫描方法、装置、存储介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118296603A (zh) |
-
2024
- 2024-04-17 CN CN202410464454.8A patent/CN118296603A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7080356B2 (en) | Certification test suite | |
US8082542B2 (en) | Load time in-lining of subroutines | |
CN110955409B (zh) | 在云平台上创建资源的方法和装置 | |
CN111597110B (zh) | 页面测试方法、装置、电子设备及存储介质 | |
CN111913741B (zh) | 对象拦截方法、装置、介质及电子设备 | |
US11422917B2 (en) | Deriving software application dependency trees for white-box testing | |
CN111158741A (zh) | 监控业务模块对第三方类库依赖关系变化的方法及装置 | |
CN103246601B (zh) | 测试方法及装置 | |
CN111639026A (zh) | 接口测试方法、装置和*** | |
CN112419057A (zh) | 智能合约的日志生成及保存方法、装置、设备和存储介质 | |
CN108897588B (zh) | 一种用于模块间通信的路由方法和路由装置 | |
CN114116505A (zh) | 代码测试方法及装置 | |
CN110968296A (zh) | 一种数据获取方法、装置、设备及可读存储介质 | |
CN114816816A (zh) | 崩溃堆栈信息处理方法、装置、设备及存储介质 | |
CN111857797B (zh) | 一种镜像构建方法、***及相关装置 | |
CN117149209A (zh) | 一种代码增量编译方法、装置、计算机设备及存储介质 | |
CN116756016A (zh) | 多浏览器测试方法、装置、设备、介质及程序产品 | |
CN118296603A (zh) | 静态代码扫描方法、装置、存储介质及电子设备 | |
CN116737535A (zh) | 接口测试方法、装置、计算机设备和存储介质 | |
CN113688031B (zh) | 一种基于字节码增强技术的测试定位方法 | |
WO2022078057A1 (zh) | 应用包发布方法、应用方法、装置、介质、服务器及设备 | |
EP2721494B1 (en) | System and method to in-line script dependencies | |
CN112817922B (zh) | 日志动态打印方法、装置、计算机设备及存储介质 | |
CN114328180A (zh) | 接口自动化测试方法、***、电子设备及存储介质 | |
CN112732562A (zh) | 一种计算机的测试方法、***及相关装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |