CN114817921A - 代码整改方法及装置 - Google Patents

代码整改方法及装置 Download PDF

Info

Publication number
CN114817921A
CN114817921A CN202210506565.1A CN202210506565A CN114817921A CN 114817921 A CN114817921 A CN 114817921A CN 202210506565 A CN202210506565 A CN 202210506565A CN 114817921 A CN114817921 A CN 114817921A
Authority
CN
China
Prior art keywords
static
rule
rectification
server
code file
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
Application number
CN202210506565.1A
Other languages
English (en)
Inventor
张斌洪
张银
毛淑平
郭敏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Industrial and Commercial Bank of China Ltd ICBC
Original Assignee
Industrial and Commercial Bank of China Ltd ICBC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Industrial and Commercial Bank of China Ltd ICBC filed Critical Industrial and Commercial Bank of China Ltd ICBC
Priority to CN202210506565.1A priority Critical patent/CN114817921A/zh
Publication of CN114817921A publication Critical patent/CN114817921A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Stored Programmes (AREA)

Abstract

本公开提供了一种代码整改方法,涉及软件开发技术领域,可用于金融科技技术领域。该方法应用于静态扫描服务器,包括:启动静态扫描服务器,使用代理模式在静态扫描服务器上启动沙箱容器;对待检查的代码文件进行静态扫描,静态扫描服务器配置有多条静态规则;通过沙箱容器获取静态扫描后的扫描日志,判断扫描日志是否触发至少一条静态规则,如果是,则确定待检查的代码文件为待修改代码文件,从问题整改服务器获取对应待修改代码文件的整改信息和整改后代码文件。本公开还提供了一种代码整改装置、电子设备、存储介质和程序产品。

Description

代码整改方法及装置
技术领域
本公开涉及软件开发技术领域,可用于金融科技技术领域,具体涉及一种代码整改方法、装置、电子设备及介质。
背景技术
目前,在进行代码技术债整改和代码提交的门禁检查中,对于处理静态代码被扫描出的很多中高风险问题,主要通过开发人员手工修改。如果是数量较多、修改方式比较固定的风险问题,每次重复的分析和修改,难以满足开发人员对快捷性和重用性方面的要求,降低了开发效率。
因此,现有的代码扫描出现的问题较多,修改方式比较固定,人工手动整改代码具有中高风险,增加了开发人员的工作负担,降低了开发效率。
发明内容
鉴于上述问题,本公开提供了一种代码整改方法、装置、电子设备及介质,可以减少开发人员在中高风险问题上的整改时间损耗,提高开发工作效率。
根据本公开的第一个方面,提供了一种代码整改方法,应用于静态扫描服务器,方法包括:启动静态扫描服务器,使用代理模式在静态扫描服务器上启动沙箱容器;对待检查的代码文件进行静态扫描,静态扫描服务器配置有多条静态规则;通过沙箱容器获取静态扫描后的扫描日志,判断扫描日志是否触发至少一条静态规则,如果是,则确定待检查的代码文件为待修改代码文件,从问题整改服务器获取对应待修改代码文件的整改信息和整改后代码文件。
根据本公开的实施例,沙箱容器在启动后加载有代码监控插件,用于实时监控静态扫描服务器的调用情况,并获取静态扫描后的扫描日志。
根据本公开的实施例,判断扫描日志是否触发至少一条静态规则之后,还包括:若扫描日志未触发至少一条静态规则,则提交待检查的代码文件。
根据本公开的实施例,确定待检查的代码文件为待修改代码文件之后,还包括:沙箱容器获取待修改代码文件对应的文本信息和触发到的静态规则标识;将文本信息和静态规则标识通过沙箱容器传递至问题整改服务器。
根据本公开的实施例,文本信息包括规则解释和代码行数。
根据本公开的实施例,从问题整改服务器获取对应待修改代码文件的整改信息和整改后代码文件,具体包括使用问题整改服务器执行以下操作:根据静态规则标识,匹配对应的目标整改规则;根据目标整改规则对待修改代码文件进行整改,生成整改信息和整改后代码文件;将整改信息和整改后代码文件通过沙箱容器反馈至静态扫描服务器。
根据本公开的实施例,问题整改服务器为三层分层架构,包括界面控制层,其中:通过界面控制层接收沙箱容器传递的文本信息和静态规则标识,以及将整改信息和整改后代码文件反馈至沙箱容器。
根据本公开的实施例,问题整改服务器配置有规则数据库,规则数据库预设有多条自动整改规则,根据静态规则标识,匹配对应的目标整改规则,还包括:判断规则数据库中是否存在至少一条对应静态规则标识的自动整改规则,如果是,则将存在的至少一条自动整改规则确定为目标整改规则。
根据本公开的实施例,判断规则数据库中是否存在至少一条对应静态规则标识的自动整改规则,还包括:当规则数据库中不存在至少一条对应静态规则标识的自动整改规则,则确定静态规则标识无法匹配对应的目标整改规则;问题整改服务器生成未整改信息,并将未整改信息和待修改代码文件通过沙箱容器反馈至静态扫描服务器。
本公开的第二方面提供了一种代码整改装置,应用于静态扫描服务器,装置包括:沙箱启动模块,用于启动静态扫描服务器,使用代理模式在静态扫描服务器上启动沙箱容器;静态扫描模块,用于对待检查的代码文件进行静态扫描,静态扫描服务器配置有多条静态规则;代码整改模块,用于通过沙箱容器获取静态扫描后的扫描日志,判断扫描日志是否触发至少一条静态规则,如果是,则确定待检查的代码文件为待修改代码文件,从问题整改服务器获取对应待修改代码文件的整改信息和整改后代码文件。
本公开的第三方面提供了一种电子设备,包括:一个或多个处理器;存储器,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行上述代码整改方法。
本公开的第四方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行上述代码整改方法。
本公开的第五方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述代码整改方法。
与现有技术相比,本公开提供的代码整改方法、装置、电子设备及介质,至少具有以下有益效果:
本公开在开发代码完成sonar静态扫描后,如果检查出高风险问题,可以马上获取自动整改后的文件,从而提高以下两个场景的工作效率:
(1)针对现有的老应用存在技术债务多的问题,如静态代码规范问题数多、代码圈复杂度较高等,影响其研发运营一体化(DevOps)标准的提升。本公开可以减少开发人员手工整改存量代码中高风险问题的工作量,使开发组可以把更多资源投入到开发工作中。
(2)针对现有的开发提交变更代码必须经过sonar服务进行静态代码扫描,没有违反中高风险问题的代码才能通过门禁。本公开自动生成整改后的文件,可以有效协助开发进行新代码的问题整改,从而快速完成代码提交,提高开发效率。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的代码整改方法及装置的应用场景;
图2示意性示出了根据本公开实施例的代码整改方法的流程图;
图3示意性示出了根据本公开实施例的扫描日志判断过程的流程图;
图4示意性示出了根据本公开实施例的待修改代码文件确认之后的流程图;
图5示意性示出了根据本公开实施例的整改后代码文件获取的流程图;
图6示意性示出了根据本公开实施例的目标整改规则匹配的流程图;
图7示意性示出了根据本公开实施例的自动整改规则判断的流程图;
图8示意性示出了根据本公开具体实施例的代码整改方法的操作流程图;
图9示意性示出了根据本公开实施例的代码整改装置的框图;以及
图10示意性示出了根据本公开实施例的适于实现代码整改方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
附图中示出了一些方框图和/或流程图。应理解,方框图和/或流程图中的一些方框或其组合可以由计算机程序指令来实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器,从而这些指令在由该处理器执行时可以创建用于实现这些方框图和/或流程图中所说明的功能/操作的装置。本公开的技术可以硬件和/或软件(包括固件、微代码等)的形式来实现。另外,本公开的技术可以采取存储有指令的计算机可读存储介质上的计算机程序产品的形式,该计算机程序产品可供指令执行系统使用或者结合指令执行系统使用。
在本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
本公开的实施例提供一种代码整改方法、装置、设备、存储介质和程序产品,涉及软件开发技术领域,可用于金融科技技术领域。该方法应用于静态扫描服务器,包括:启动静态扫描服务器,使用代理模式在静态扫描服务器上启动沙箱容器;对待检查的代码文件进行静态扫描,静态扫描服务器配置有多条静态规则;通过沙箱容器获取静态扫描后的扫描日志,判断扫描日志是否触发至少一条静态规则,如果是,则确定待检查的代码文件为待修改代码文件,从问题整改服务器获取对应待修改代码文件的整改信息和整改后代码文件。
在详细描述本公开的具体实施例之前,首先对涉及的英文或者技术术语进行阐释,以便于更好地理解本公开。
sonar:一个用于代码扫描检测的开放平台。可以实现对不同编程语言的项目代码进行分析,同时可以集成不同的测试工具、代码分析工具,以及持续集成工具。
AOP:(面向切面编程,Aspect Oriented Programming),思想是面向业务处理过程的某个步骤或阶段进行编程,这个步骤或阶段被称为切面,其目的是降低业务逻辑的各部分之间的耦合,常见的AOP实现基本原理有两种:代理和行为注入。
Jvm-sandbox:Jvm沙箱容器,一种Jvm的非侵入式运行期的AOP解决方案,可以实现在不重启、不侵入目标Jvm应用的AOP解决方案。
reportIssue:sonar服务器代码扫描进程中的方法,会对命中检查规则的行,抛出信息提示。
图1示意性示出了根据本公开实施例的代码整改方法及装置的应用场景。需要注意的是,图1所示仅为可以应用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,根据该实施例的应用场景100可以包括终端设备101、静态扫描服务器102、网络103和问题整改服务器104。网络103用以在终端设备101与静态扫描服务器102之间提供通信链路的介质,也用以在静态扫描服务器102与问题整改服务器104之间提供通信链路的介质。网络103可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101通过网络103与静态扫描服务器102交互,以接收或发送代码文件等。终端设备101上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
终端设备101可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
静态扫描服务器102可以是提供各种服务的服务器,例如对用户利用终端设备101所提交的代码文件提供支持的后台管理服务器(仅为示例)。后台管理服务器可以对接收到的代码文件等数据进行分析等处理,并将处理结果反馈给终端设备101。
静态扫描服务器102还通过网络103与问题整改服务器104交互,以对代码文件进行分析等处理,并接收问题整改服务器104反馈的整改信息和整改后代码文件,确定最终扫描完成后提交的整改后代码文件。
需要说明的是,本公开实施例所提供的代码整改方法一般可以由静态扫描服务器102执行。相应地,本公开实施例所提供的代码整改装置一般可以设置于静态扫描服务器102中。本公开实施例所提供的代码整改方法也可以由不同于静态扫描服务器102且能够与终端设备101和/或静态扫描服务器102通信的服务器或服务器集群执行。相应地,本公开实施例所提供的代码整改装置也可以设置于不同于静态扫描服务器102且能够与终端设备101和/或静态扫描服务器102通信的服务器或服务器集群中。
应该理解,图1中的终端设备、静态扫描服务器、网络和问题整改服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、静态扫描服务器、网络和问题整改服务器。
以下将基于图1描述的应用场景,通过图2~图8对本公开实施例的代码整改方法进行详细描述。
图2示意性示出了根据本公开实施例的代码整改方法的流程图。
如图2所示,该实施例的代码整改方法应用于静态扫描服务器,可以包括操作S210~操作S230。
在操作S210,启动静态扫描服务器,使用代理模式在静态扫描服务器上启动沙箱容器。
该静态扫描服务器例如可以为sonar服务器,该沙箱容器例如可以为Jvm-sandbox。启动sonar服务器后,可以通过代理模式,也即agent启动方式,在sonar服务器上启动Jvm-sandbox,代码实现例如可以为-javaagent:″**/sandbox-agentjar**。
进一步地,沙箱容器在启动后加载有代码监控插件,用于实时监控静态扫描服务器的调用情况,并获取静态扫描后的扫描日志。
该代码监控插件例如可以为Jvm-sandbox框架下编写的监控插件sand-module-sonar-1.0.0-SNAPSHOT-jar-with-dependencies.jar,该监控插件可以用于实时监控静态扫描服务器的调用情况,并获取静态扫描后的扫描日志。将该监控插件放在Jvm-sandbox的用户模块目录(也即${HOME}/.sandbox-module/)下,即可实现在沙箱容器上的加载。
在操作S220,对待检查的代码文件进行静态扫描,静态扫描服务器配置有多条静态规则。
待检查的代码文件指的是计算机软件开发过程中的待检查代码,通常开发人员在编写完当前开发流后需要对当前开发流中的所有代码进行代码规范检查,则当前开发流中的所有代码即为待检查的代码文件。
使用静态扫描服务器进行静态扫描,该静态扫描服务器预先配置有多条静态规则,用于后续判断代码是否出现问题有待整改。
在操作S230,通过沙箱容器获取静态扫描后的扫描日志,判断扫描日志是否触发至少一条静态规则,如果是,则确定待检查的代码文件为待修改代码文件,从问题整改服务器获取对应待修改代码文件的整改信息和整改后代码文件。
静态代码规则扫描完成后,如触发规则,则可以确定待检查的代码文件需要进行后续修改,然后开发人员可以从问题整改服务器获取对应的整改信息并下载整改后代码文件。
最后,代码整改自动完成后,代码提交者确认一遍是否整改无误,再自己进行提交。
通过本公开的实施例,能够在代码进行静态代码扫描的时候,自动完成静态代码规范问题的整改。本公开自动生成整改后代码文件,可以有效协助开发进行新代码的问题整改,从而快速完成代码提交,提高开发效率。
图3示意性示出了根据本公开实施例的扫描日志判断过程的流程图。
如图3所示,上述操作S230中的判断扫描日志是否触发至少一条静态规则之后,具体还可以包括操作S2301。
在操作S2301,若扫描日志未触发至少一条静态规则,则提交待检查的代码文件。
由此,本公开通过静态规则判断,可以确定是否提交原始代码文件,还是整改后代码文件。
图4示意性示出了根据本公开实施例的待修改代码文件确认之后的流程图。
如图4所示,上述操作S230中的确定待检查的代码文件为待修改代码文件之后,具体还可以包括操作S2302~操作S2303。
在操作S2302,沙箱容器获取待修改代码文件对应的文本信息和触发到的静态规则标识。
具体地,该文本信息可以包括规则解释和代码行数。文本信息和触发到的静态规则标识可以在sonar服务器的进程调用reportIssue方法记录,并被Jvm-sandbox中的代码监控插件监控到。
在操作S2303,将文本信息和静态规则标识通过沙箱容器传递至问题整改服务器。
具体地,可以通过超文本传输协议(Hyper Text Transfer Protocol,HTTP)调用统一资源定位系统(uniform resource locator,URL)访问该问题整改服务器,并将文本信息和静态规则标识(规则id)以json格式传递至问题整改服务器。
本公开实施例中,问题整改服务器为三层分层架构,包括界面控制层。其中,通过界面控制层可以接收沙箱容器传递的文本信息和静态规则标识,通过界面控制层还可以将整改信息和整改后代码文件反馈至沙箱容器。
具体来说,该三层分层架构例如可以为springboot的三层分层架构,包括界面控制层(也即controller层)、业务逻辑服务层和数据访问层。通过controller层接收sonar服务器中的Jvm-sandbox的请求和数据。例如,根据上述内容,可以将文本信息和静态规则标识以json格式传递至问题整改服务器的controller层。
图5示意性示出了根据本公开实施例的整改后代码文件获取的流程图。
如图5所示,上述操作S230中的从问题整改服务器获取对应待修改代码文件的整改信息和整改后代码文件,具体可以包括使用问题整改服务器执行以下操作S510~操作S530。
在操作S510,根据静态规则标识,匹配对应的目标整改规则。
在操作S520,根据目标整改规则对待修改代码文件进行整改,生成整改信息和整改后代码文件。
在操作S530,将整改信息和整改后代码文件通过沙箱容器反馈至静态扫描服务器。
由此可见,问题整改服务器可以根据不同的静态规则标识,适配不同的整改规则,以对待修改代码文件进行整改。
图6示意性示出了根据本公开实施例的目标整改规则匹配的流程图。
如图6所示,本公开实施例中,问题整改服务器配置有规则数据库,规则数据库预设有多条自动整改规则。在此基础上,上述操作S510中的根据静态规则标识,匹配对应的目标整改规则,具体还可以包括操作S5101。
在操作S5101,判断规则数据库中是否存在至少一条对应静态规则标识的自动整改规则,如果是,则将存在的至少一条自动整改规则确定为目标整改规则。
根据sonar服务器的静态规则标识,匹配规则数据库中已配置的自动整改规则。如果匹配到至少一条自动整改规则,则将匹配成功的自动整改规则确定为对应静态规则标识的目标整改规则。
图7示意性示出了根据本公开实施例的自动整改规则判断的流程图。
如图7所示,上述操作S5101中的判断规则数据库中是否存在至少一条对应静态规则标识的自动整改规则,具体还可以包括以下操作S51011~操作S51012。
在操作S51011,当规则数据库中不存在至少一条对应静态规则标识的自动整改规则,则确定静态规则标识无法匹配对应的目标整改规则。
在操作S51012,问题整改服务器生成未整改信息,并将未整改信息和待修改代码文件通过沙箱容器反馈至静态扫描服务器。
由此,如果操作S5101中没有匹配到任何自动整改规则,则说明该静态规则标识没有配置对应的自动整改方法,也就无法对待修改代码文件进行整改。
图8示意性示出了根据本公开具体实施例的代码整改方法的操作流程图。
如图8所示,其给出了一具体实施例来实现本公开的代码整改方法,该方法的实现过程可以依次为:
(1)sand-module-sonar-1.0.0-SNAPSHOT-jar-with-dependencies.jar模块在Jvm-sandbox启动后完成加载,会实时监控sonar服务器的调用情况,获取sonar服务器进程中reportIssue方法的入参;
(2)开发提交代码或者例行代码检查时,会调用sonar服务器进行静态代码扫描,如果代码没有违反sonar服务器里配置的静态规则,扫描完成;否则,sonar服务器进程会调用reportIssue方法记录被触发的规则id和文本信息(例如规则解释和代码行数等),并被Jvm-sandbox模块监控到;
(3)从reportIssue方法中获取入参,包括规则id和文本信息;
(4)通过http方式调用url访问问题整改服务,并把规则id和文件信息以json的格式传到问题整改服务器的controller层;
(5)问题整改服务器为springboot的三层分层架构,通过其controller层接收sonar服务器中Jvm-sandbox的请求和数据;
(6)根据sonar服务器的规则id,匹配规则数据库中已配置自动整改规则。如果匹配到自动整改规则,再把触发规则代码行数的字符串去校验,来定位代码文件中需要修改的地方。如果没有匹配到,则说明这个规则没有配置整改方法。
例如,下表1给出了规则数据库的自动整改规则样例。
表1
Figure BDA0003636177350000111
(7)通过对文件字符串进行逻辑替换,完成错误代码语句的整改,生成整改后代码文件和相关的整改信息。
例如,下表2给出了匹配到S1149规则进行整改的自动整改代码的样例。
表2
Figure BDA0003636177350000112
(8)通过Springboot架构的controller层对sonar服务器的Jvm-sandbox进行答复。sonar服务器的jvm-sandbox收到答复,获得返回数据,并把返回数据打印在扫描日志中,完成扫描。
综上所述,本公开基于Jvm-sandbox,在sonar服务器对代码文件进行规则扫描时,实时无侵入方式获取文件的扫描信息来匹配代码整改方法,从而对代码文件进行规范整改,输出整改后的文件。本公开自动生成整改后的文件,可以有效协助开发进行新代码的问题整改,从而快速完成代码提交,提高开发效率。并且,本公开减少开发人员手工整改存量代码中高风险问题的工作量,使开发组可以把更多资源投入到开发工作中。
基于上述代码整改方法,本公开还提供了一种代码整改装置,以下将结合图9对该装置进行详细描述。
图9示意性示出了根据本公开实施例的代码整改装置的框图。
如图9所示,该实施例的代码整改装置900应用于静态扫描服务器,包括沙箱启动模块910、静态扫描模块920、代码整改模块930和代码提交模块940。
沙箱启动模块910,用于启动静态扫描服务器,使用代理模式在静态扫描服务器上启动沙箱容器。在一实施例中,沙箱启动模块910可以用于执行前文描述的操作S210,在此不再赘述。
静态扫描模块920,用于对待检查的代码文件进行静态扫描,静态扫描服务器配置有多条静态规则。在一实施例中,静态扫描模块920可以用于执行前文描述的操作S220,在此不再赘述。
代码整改模块930,用于通过沙箱容器获取静态扫描后的扫描日志,判断扫描日志是否触发至少一条静态规则,如果是,则确定待检查的代码文件为待修改代码文件,从问题整改服务器获取对应待修改代码文件的整改信息和整改后代码文件。在一实施例中,代码整改模块930可以用于执行前文描述的操作S230,在此不再赘述。
通过本公开的实施例,能够在代码进行静态代码规范问题扫描的时候,自动完成静态代码规范问题的整改。本公开自动生成整改后代码文件,可以有效协助开发进行新代码的问题整改,从而快速完成代码提交,提高开发效率。
根据本公开的实施例,沙箱启动模块910、静态扫描模块920、代码整改模块930和代码提交模块940中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。根据本公开的实施例,沙箱启动模块910、静态扫描模块920、代码整改模块930和代码提交模块940中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,沙箱启动模块910、静态扫描模块920、代码整改模块930和代码提交模块940中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
图10示意性示出了根据本公开实施例的适于实现代码整改方法的电子设备的方框图。
如图10所示,根据本公开实施例的电子设备1000包括处理器1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。处理器1001例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器1001还可以包括用于缓存用途的板载存储器。处理器1001可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM 1003中,存储有电子设备1000操作所需的各种程序和数据。处理器1001、ROM 1002以及RAM 1003通过总线1004彼此相连。处理器1001通过执行ROM 1002和/或RAM1003中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,所述程序也可以存储在除ROM 1002和RAM 1003以外的一个或多个存储器中。处理器1001也可以通过执行存储在所述一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1000还可以包括输入/输出(I/O)接口1005,输入/输出(I/O)接口1005也连接至总线1004。电子设备1000还可以包括连接至I/O接口1005的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的;也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的代码整改方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1002和/或RAM 1003和/或ROM 1002和RAM 1003以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的代码整改方法。
在该计算机程序被处理器1001执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1009被下载和安装,和/或从可拆卸介质1011被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分1009从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被处理器1001执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述,但是这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。

Claims (13)

1.一种代码整改方法,应用于静态扫描服务器,方法包括:
启动静态扫描服务器,使用代理模式在所述静态扫描服务器上启动沙箱容器;
对待检查的代码文件进行静态扫描,所述静态扫描服务器配置有多条静态规则;
通过所述沙箱容器获取所述静态扫描后的扫描日志,判断所述扫描日志是否触发至少一条所述静态规则,如果是,则确定所述待检查的代码文件为待修改代码文件,从问题整改服务器获取对应所述待修改代码文件的整改信息和整改后代码文件。
2.根据权利要求1所述的方法,其中,所述沙箱容器在启动后加载有代码监控插件,用于实时监控所述静态扫描服务器的调用情况,并获取所述静态扫描后的扫描日志。
3.根据权利要求1所述的方法,其中,所述判断所述扫描日志是否触发至少一条所述静态规则之后,还包括:
若所述扫描日志未触发至少一条所述静态规则,则提交所述待检查的代码文件。
4.根据权利要求1所述的方法,其中,所述确定所述待检查的代码文件为待修改代码文件之后,还包括:
所述沙箱容器获取所述待修改代码文件对应的文本信息和触发到的静态规则标识;
将所述文本信息和静态规则标识通过所述沙箱容器传递至所述问题整改服务器。
5.根据权利要求4所述的方法,其中,所述文本信息包括规则解释和代码行数。
6.根据权利要求4所述的方法,其中,所述从问题整改服务器获取对应所述待修改代码文件的整改信息和整改后代码文件,具体包括使用所述问题整改服务器执行以下操作:
根据所述静态规则标识,匹配对应的目标整改规则;
根据所述目标整改规则对所述待修改代码文件进行整改,生成整改信息和整改后代码文件;
将所述整改信息和整改后代码文件通过所述沙箱容器反馈至所述静态扫描服务器。
7.根据权利要求4所述的方法,其中,所述问题整改服务器为三层分层架构,包括界面控制层,其中:
通过所述界面控制层接收所述沙箱容器传递的文本信息和静态规则标识,以及将所述整改信息和整改后代码文件反馈至所述沙箱容器。
8.根据权利要求6所述的方法,其中,所述问题整改服务器配置有规则数据库,所述规则数据库预设有多条自动整改规则,所述根据所述静态规则标识,匹配对应的目标整改规则,还包括:
判断所述规则数据库中是否存在至少一条对应所述静态规则标识的自动整改规则,如果是,则将存在的至少一条所述自动整改规则确定为所述目标整改规则。
9.根据权利要求8所述的方法,其中,所述判断所述规则数据库中是否存在至少一条对应所述静态规则标识的自动整改规则,还包括:
当所述规则数据库中不存在至少一条对应所述静态规则标识的自动整改规则,则确定所述静态规则标识无法匹配对应的目标整改规则;
所述问题整改服务器生成未整改信息,并将所述未整改信息和所述待修改代码文件通过所述沙箱容器反馈至所述静态扫描服务器。
10.一种代码整改装置,应用于静态扫描服务器,装置包括:
沙箱启动模块,用于启动静态扫描服务器,使用代理模式在所述静态扫描服务器上启动沙箱容器;
静态扫描模块,用于对待检查的代码文件进行静态扫描,所述静态扫描服务器配置有多条静态规则;
代码整改模块,用于通过所述沙箱容器获取所述静态扫描后的扫描日志,判断所述扫描日志是否触发至少一条所述静态规则,如果是,则确定所述待检查的代码文件为待修改代码文件,从问题整改服务器获取对应所述待修改代码文件的整改信息和整改后代码文件。
11.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~9中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~9中任一项所述的方法。
13.一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现根据权利要求1~9中任一项所述的方法。
CN202210506565.1A 2022-05-10 2022-05-10 代码整改方法及装置 Pending CN114817921A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210506565.1A CN114817921A (zh) 2022-05-10 2022-05-10 代码整改方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210506565.1A CN114817921A (zh) 2022-05-10 2022-05-10 代码整改方法及装置

Publications (1)

Publication Number Publication Date
CN114817921A true CN114817921A (zh) 2022-07-29

Family

ID=82514107

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210506565.1A Pending CN114817921A (zh) 2022-05-10 2022-05-10 代码整改方法及装置

Country Status (1)

Country Link
CN (1) CN114817921A (zh)

Similar Documents

Publication Publication Date Title
CN108063755B (zh) 漏洞扫描方法、系统、存储介质和电子设备
CN108984202B (zh) 一种电子资源分享方法、装置和存储介质
CN109656799B (zh) 测试方法和装置
CN111597114A (zh) 小程序的验证方法、装置、设备及存储介质
CN116561013B (zh) 基于目标服务框架的测试方法、装置、电子设备和介质
CN113362173A (zh) 防重机制验证方法、验证系统、电子设备及存储介质
CN113191889A (zh) 风控配置方法、配置系统、电子设备及可读存储介质
CN117076280A (zh) 策略生成方法及装置、电子设备和计算机可读存储介质
CN114817921A (zh) 代码整改方法及装置
CN114115628A (zh) 应用于u盾测试的u盾显示信息获取方法、装置、设备、介质及程序产品
CN114386951A (zh) 流程审批方法、装置、电子设备及存储介质
CN113535568B (zh) 应用部署版本的验证方法、装置、设备和介质
CN113326506A (zh) 一种小程序监控方法及装置
CN113015170A (zh) 短信验证方法、装置、电子设备和介质
CN112860344A (zh) 组件处理方法、装置、电子设备和存储介质
KR20190130957A (ko) 미리 스크래핑된 빅데이터를 이용한 클라우드 스크래핑 시스템 및 방법과, 이를 위한 컴퓨터 프로그램
CN111125676B (zh) 联合授权方法和装置
CN115658186A (zh) 接口调用方法及装置、电子设备和计算机可读存储介质
CN113568838A (zh) 测试数据生成方法、装置、设备、存储介质和程序产品
CN117176576A (zh) 网络资源变更方法、装置、设备及存储介质
CN113961468A (zh) 应用于u盾测试的数字证书灌入方法、装置、设备、介质和程序产品
CN115687002A (zh) 数据处理方法、装置、设备、介质和程序产品
CN114117449A (zh) 基于隐藏参数挖掘的测试方法、装置、电子设备和介质
CN117130684A (zh) 任务处理方法、代理端创建方法及装置、电子设备
CN116896525A (zh) 计算机设备的配置检测方法、装置、设备及介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination