银行系统的静态源代码扫描方法、装置及计算机存储介质与流程

文档序号:19156553发布日期:2019-11-16 00:52阅读:398来源:国知局
银行系统的静态源代码扫描方法、装置及计算机存储介质与流程

本发明涉及计算机技术领域,尤其涉及一种银行系统静态源代码扫描方法、装置及计算机可读存储介质。



背景技术:

sonarqube是一个用于代码质量管理的开源平台,用于管理源代码的质量,可以从七个维度检测代码质量,可以快速的定位代码中潜在的或者明显的错误。通过插件形式,可以支持包括java、c#、c/c++、pl/sql、cobol、javascrip、groovy等等二十几种编程语言的代码质量管理与检测。

现有的银行内部有一套自己的系统、银行业务子系统、及应用的管理逻辑。而sonarqube作为一个开源平台,无法自动识别银行中的系统架构。因此,目前无法针对银行的系统的静态源代码扫描数据进行分析和汇总,以及无法通知相关系统的负责人。

静态源代码扫描指的是在不运行代码的方式下,通过文本分析和正则匹配等技术扫描代码,发现代码中存在的规范性、安全性问题,并输出静态扫描结果。

静态源代码扫描是近些年被人提及较多的软件应用安全解决方案之一;其原理是:由软件工程中程序员在写好源代码后,无需经过编译器编译,而直接使用一些扫描工具对其进行扫描,找出代码当中存在的一些语义缺陷、安全漏洞的解决方案。



技术实现要素:

本发明提供一种银行系统的静态源代码扫描方法、装置及计算机可读存储介质,其主要目的旨在解决如何及时监控银行系统的静态源代码的技术问题。

为实现上述目的,本发明提供一种银行系统的静态源代码扫描方法,该方法包括如下步骤:

根据预设的扫描周期,产生代码扫描的触发请求;

判断是否需要扫描源代码;

若需要扫描源代码,则读取银行业务子系统和项目路径;

根据读取到的银行业务子系统和项目路径获取待扫描的源代码;

调用代码扫描引擎对源代码进行扫描生成相应的扫描结果。

优选地,所述的银行系统的静态源代码扫描方法还包括步骤:通过代码扫描引擎输出扫描结果。

优选地,所述扫描结果包括至少一个代码缺陷信息,每个代码缺陷信息包括代码缺陷位置信息和代码缺陷描述信息。

优选地,所述代码缺陷位置信息是用于代码缺陷所在的代码所处的位置进行描述的信息,其中,所述代码缺陷位置信息包括代码缺陷对应的代码文件的文件名和在所述代码文件中的行数。

优选地,所述代码缺陷描述信息是用于对代码缺陷进行描述的信息,其中,所述代码缺陷描述信息包括代码缺陷类型信息。

优选地,所述代码缺陷类型信息包括空指针缺陷、未初始化缺陷、数值计算缺陷、数组越界缺陷、运行逻辑缺陷。

优选地,所述调用代码扫描引擎对源代码进行扫描生成相应的扫描结果的步骤包括:

选择相应的代码扫描规则;

根据相应的代码扫描规则扫描源代码;

生成相应的扫描结果。

优选地,所述代码扫描规则包括sonarqube通用扫描规则。

优选地,所述的银行系统的静态源代码扫描方法还包括步骤:整合所述扫描结果以获得扫描结果报告。

优选地,所述的银行系统的静态源代码扫描方法还包括步骤:

读取银行业务子系统的负责人信息;

根据所述银行业务子系统的负责人信息,将整合后的扫描结果报告进行实时推送。

为实现上述目的,本发明还提供一种银行系统的静态源代码扫描装置,所述装置包括存储器和处理器,所述存储器存储有可在所述处理器上运行的静态源代码扫描程序,所述静态源代码扫描程序被所述处理器执行时实现如上所述银行系统的静态源代码扫描方法的步骤。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有静态源代码扫描程序,所述静态源代码扫描程序可被一个或者多个处理器执行,以实现如上所述银行系统的静态源代码扫描方法的步骤。

本发明提出的银行系统的静态源代码扫描方法、装置及计算机可读存储介质,通过预设的扫描周期,产生代码扫描的触发请求;当判断需要扫描源代码时,读取银行业务子系统和项目路径、根据读取到的银行业务子系统和项目获取待扫描的源代码、及调用代码扫描引擎对源代码进行扫描,从而方便对源代码进行及时监控。

附图说明

图1为本发明一实施例提供的银行系统的静态源代码扫描方法的流程示意图;

图2为本发明一实施例提供的静态源代码扫描装置的内部结构示意图;

图3为本发明一实施例提供的静态源代码扫描装置中静态源代码扫描程序的模块示意图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种银行系统的静态源代码扫描方法。本实施例中,银行系统中包括配置管理系统和银行业务子系统,银行系统中有对应每一项目的项目路径。参照图1所示,为本发明一实施例提供的银行系统的静态源代码扫描方法的流程示意图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。

在本实施例中,所述银行系统的静态源代码扫描方法包括:

步骤a:根据预设的扫描周期,产生代码扫描的触发请求。在本实施例中,所述扫描周期可以由银行系统负责人根据所需银行系统静态源代码的监控周期来设置,例如,监控者将扫描周期设置为一周或一月,即每周或每月产生一次触发请求银行系统静态源代码进行一次扫描。

步骤b:判断是否需要扫描源代码。具体地,在代码扫描的触发请求产生后,判断是否需要扫描源代码,当判断需要扫描源代码时,执行步骤c。当判断不需要扫描源代码时,重复执行步骤b。

进一步地,所述源代码可以是,但不限于,指定的一段代码,也可以是至少一个代码文件中的代码,还可以是指定的文件夹中各个代码文件中的代码。

步骤c:读取银行业务子系统和项目路径。具体地,当需要扫描源代码时,读取银行业务子系统和项目路径。

步骤d:根据读取到的银行业务子系统和项目获取待扫描的源代码。具体地,当读取到银行业务子系统和项目路径后,即可根据读取到的银行业务子系统和项目获取待扫描的源代码。

步骤e:调用代码扫描引擎对源代码进行扫描。在本实施例中,当获取到待扫描的源代码后,通过调用代码扫描引擎以对待扫描的源代码进行扫描。

具体地,在一实施例中,所述步骤e包括:

选择相应的代码扫描规则;

根据相应的代码扫描规则扫描源代码;

生成相应的扫描结果。

更详细地,在本实施例中,所述代码扫描规则可以是sonarqube通用扫描规则;并且,为了适用于银行系统的代码扫描规则,本实施例的代码扫描规则在所述sonarqube通用扫描规则的基础上做了相应的筛选过滤和修改。

进一步地,为了获得更详细的扫描结果,所述银行系统的静态源代码扫描方法还包括:

步骤f:通过代码扫描引擎输出扫描结果。

优选地,所述扫描结果可以包括,但不限于,包括至少一个代码缺陷信息。每个代码缺陷信息可以包括,但不限于,包括代码缺陷位置信息和代码缺陷描述信息。

在本实施例中,所述代码缺陷位置信息是用于代码缺陷所在的代码所处的位置进行描述的信息,例如,所述代码缺陷位置信息可以包括,但不限于包括代码缺陷对应的代码文件的文件名和在上述代码文件中的行数。

在本实施例中,所述代码缺陷描述信息是用于对代码缺陷进行描述的各种信息,例如,代码缺陷描述信息可以包括代码缺陷类型信息。

作为示例,所述代码缺陷类型信息可以是,但不限于,空指针缺陷、未初始化缺陷、数值计算缺陷、数组越界缺陷、运行逻辑缺陷等等。

优选地,所述代码扫描引擎可以是,但不限于,pmd、findbugs等开源代码扫描引擎,所述代码扫描引擎还可以是根据用户的需求选择更合适的代码扫描引擎。

进一步地,为了可以更加方便、自动地对源代码进行扫描,在执行所述银行系统的静态源代码扫描方法之前,先预设扫描周期,从而可以根据所述预设的扫描周期,定期对所述源代码进行扫描。

进一步地,为了对所述扫描结果报告进行规范化管理,在所述步骤f之后,所述银行系统的静态源代码扫描方法还包括:

步骤g:整合所述扫描结果以获得扫描结果报告。

进一步地,为了可以让相关负责人实时获得扫描结果报告,在所述步骤g之后,所述银行系统的静态源代码扫描方法还包括:

步骤h:读取银行业务子系统的负责人信息;及

步骤i:根据读取到的银行业务子系统的负责人信息,将所述整合后的扫描结果报告进行实时推送。在本实施例中,可以通过电子邮件的方式进行实时推送(例如,通过电子邮件的方式实时推送至负责人的邮箱或手机中),从而方便相关负责人实时获得扫描结果报告。

本发明提出的银行系统静态源代码扫描方法中,通过预设的扫描周期,产生代码扫描的触发请求;当判断需要扫描源代码时,读取银行业务子系统和项目路径、根据读取到的银行业务子系统和项目获取待扫描的源代码、及调用代码扫描引擎对源代码进行扫描。本发明对接银行的配置管理系统,可以读取银行业务子系统和项目路径,并能够通过预设扫描周期,从而可以定期对银行业务子系统的代码进行扫描、并对扫描结果进行整合,以获得整合的扫描结果报告,并可以实时地将整合的扫描结果报告推送给相关的负责人的邮箱或手机中,从而能够及时监控银行系统的静态源代码。

本发明还提供一种银行系统的静态源代码扫描装置。参照图2所示,为本发明一实施例提供的银行系统的静态源代码扫描装置的内部结构示意图。

在本实施例中,所述银行系统的静态源代码扫描装置可以是pc(personalcomputer,个人电脑),也可以是智能手机、平板电脑、便携计算机等终端设备。该静态源代码扫描装置至少包括存储器11、处理器12、网络接口13以及通信总线14。

其中,所述存储器11至少包括一种类型的计算机可读存储介质,所述计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。所述存储器11在一些实施例中可以是静态源代码扫描装置1的内部存储单元,例如该银行系统的静态源代码扫描装置的硬盘。所述存储器11在另一些实施例中也可以是银行系统的静态源代码扫描装置的外部存储设备,例如静态源代码扫描装置上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,所述存储器11还可以既包括银行系统的静态源代码扫描装置的内部存储单元也包括外部存储设备。所述存储器11不仅可以用于存储安装于银行系统的静态源代码扫描装置的应用软件及各类数据,例如静态源代码扫描程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。

所述处理器12在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行所述存储器11中存储的程序代码或处理数据,例如执行静态源代码扫描程序等。

所述网络接口13可选的可以包括标准的有线接口、无线接口(如wi-fi接口),通常用于在该银行系统的静态源代码扫描装置与其他电子设备之间建立通信连接。

所述通信总线14用于实现这些组件之间的连接通信。

图2仅示出了具有组件11至14以及静态源代码扫描程序的银行系统的静态源代码扫描装置,本领域技术人员可以理解的是,图2示出的结构并不构成对银行系统的静态源代码扫描装置的限定,可以包括比图示更少或者更多的部件,或者组合某些部件,或者不同的部件布置。

在图2所示的银行系统的静态源代码扫描装置实施例中,所述存储器11中存储有静态源代码扫描程序;所述处理器12执行所述存储器11中存储的静态源代码扫描程序时实现如下步骤:

步骤a:根据预设的扫描周期,产生代码扫描的触发请求。在本实施例中,所述扫描周期可以由银行系统负责人根据所需银行系统静态源代码的监控周期来设置,例如,监控者将扫描周期设置为一周或一月,即每周或每月产生一次触发请求银行系统静态源代码进行一次扫描。

步骤b:判断是否需要扫描源代码。具体地,在代码扫描的触发请求产生后,判断是否需要扫描源代码,当判断需要扫描源代码时,执行步骤c。当判断不需要扫描源代码时,重复执行步骤b。

进一步地,所述源代码可以是,但不限于,指定的一段代码,也可以是至少一个代码文件中的代码,还可以是指定的文件夹中各个代码文件中的代码。

步骤c:读取银行业务子系统和项目路径。具体地,当需要扫描源代码时,读取银行业务子系统和项目路径。

步骤d:根据读取到的银行业务子系统和项目获取待扫描的源代码。具体地,当读取到银行业务子系统和项目路径后,即可根据读取到的银行业务子系统和项目获取待扫描的源代码。

步骤e:调用代码扫描引擎对源代码进行扫描。在本实施例中,当获取到待扫描的源代码后,通过调用代码扫描引擎以对待扫描的源代码进行扫描。

具体地,在一实施例中,所述步骤e包括:

选择相应的代码扫描规则;

根据相应的代码扫描规则扫描源代码;

生成相应的扫描结果。

更详细地,在本实施例中,所述代码扫描规则可以是sonarqube通用扫描规则;并且,为了适用于银行系统的代码扫描规则,本实施例的代码扫描规则在所述sonarqube通用扫描规则的基础上做了相应的筛选过滤和修改。

进一步地,为了获得更详细的扫描结果,所述银行系统的静态源代码扫描方法还包括:

步骤f:通过代码扫描引擎输出扫描结果。

优选地,所述扫描结果可以包括,但不限于,包括至少一个代码缺陷信息。每个代码缺陷信息可以包括,但不限于,包括代码缺陷位置信息和代码缺陷描述信息。

在本实施例中,所述代码缺陷位置信息是用于代码缺陷所在的代码所处的位置进行描述的信息,例如,所述代码缺陷位置信息可以包括,但不限于包括代码缺陷对应的代码所在文件的文件名和在上述代码文件中的行数。

在本实施例中,所述代码缺陷描述信息是用于对代码缺陷进行描述的各种信息,例如,代码缺陷描述信息可以包括代码缺陷类型信息。

作为示例,所述代码缺陷类型信息可以是,但不限于,空指针缺陷、未初始化缺陷、数值计算缺陷、数组越界缺陷、运行逻辑缺陷等等。

优选地,所述代码扫描引擎可以是,但不限于,pmd、findbugs等开源代码扫描引擎,所述代码扫描引擎还可以是根据用户的需求选择更合适的代码扫描引擎。

进一步地,为了可以更加方便、自动地对源代码进行扫描,在执行所述银行系统的静态源代码扫描方法之前,先预设扫描周期,从而可以根据所述预设的扫描周期,定期对所述源代码进行扫描。

进一步地,为了对所述扫描结果报告进行规范化管理,在所述步骤f之后,所述银行系统的静态源代码扫描方法还包括:

步骤g:整合所述扫描结果以获得扫描结果报告。

进一步地,为了可以让相关负责人实时获得扫描结果报告,在所述步骤g之后,所述银行系统的静态源代码扫描方法还包括:

步骤h:读取银行业务子系统的负责人信息;及

步骤i:根据读取到的银行业务子系统的负责人信息,将所述整合后的扫描结果报告进行实时推送。在本实施例中,可以通过电子邮件的方式进行实时推送(例如,通过电子邮件的方式实时推送至负责人的邮箱或手机中),从而方便相关负责人实时获得扫描结果报告。

可选地,在其他实施例中,所述静态源代码扫描程序还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,用于描述静态源代码扫描程序在静态源代码扫描装置中的执行过程。

例如,参照图3所示,为本发明银行系统的静态源代码扫描装置一实施例中的静态源代码扫描程序的程序模块示意图。在该实施例中,所述静态源代码扫描程序可以被分割为预设模块10、触发模块20、判断模块30、读取模块40、处理模块50、整合模块60以及推送模块70,示例性地:

所述预设模块10用于预设扫描周期,从而所述代码扫描引擎可以根据所述预设的扫描周期,定期对所述源代码进行扫描。

所述触发模块20用于根据预设的扫描周期,产生代码扫描的触发请求。

所述判断模块30用于在所述触发模块20产生代码扫描的触发请求后,判断是否需要扫描源代码。

所述读取模块40用于在所述判断模块30判断需要扫描源代码后,读取银行业务子系统和项目路径。

所述处理模块50用于在所述读取单元40读取到银行业务子系统和项目路径后,根据读取到的银行业务子系统和项目获取待扫描的源代码;

所述处理模块50还用于调用代码扫描引擎,以对源代码进行扫描并输出扫描结果;

所述整合模块60用于在所述处理模块50获得扫描结果报告后整合所述扫描结果报告。

所述读取模块30还用于读取银行业务子系统的负责人信息。

所述推送模块70用于在所述读取模块30读取到银行业务子系统的负责人信息后,根据读取到的银行业务子系统的负责人信息,将所述整合后的扫描结果报告进行实时推送。在本实施例中,可以通过电子邮件的方式实时推送至负责人的邮箱或手机中,从而方便相关负责人实时获得扫描结果报告。

所述处理模块40还用于调用代码扫描引擎以实现如下步骤:

选择相应的代码扫描规则;

根据相应的代码扫描规则扫描源代码;以及

生成相应的扫描结果。

上述预设模块10、触发模块20、判断模块30、读取模块40、处理模块50、整合模块60和推送模块70等程序模块被执行时所实现的功能或操作步骤与上述实施例大体相同,在此不再赘述。

此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有静态源代码扫描程序,所述静态源代码扫描程序可被一个或多个处理器执行,以实现如下操作:

步骤a:根据预设的扫描周期,产生代码扫描的触发请求。在本实施例中,所述扫描周期可以由银行系统负责人根据所需银行系统静态源代码的监控周期来设置,例如,监控者将扫描周期设置为一周或一月,即每周或每月产生一次触发请求银行系统静态源代码进行一次扫描。

步骤b:判断是否需要扫描源代码。具体地,在代码扫描的触发请求产生后,判断是否需要扫描源代码,当判断需要扫描源代码时,执行步骤c。当判断不需要扫描源代码时,重复执行步骤b。

步骤c:读取银行业务子系统和项目路径。

步骤d:根据读取到的银行业务子系统和项目获取待扫描的源代码。

步骤e:调用代码扫描引擎对源代码进行扫描生成相应的扫描结果。

步骤f:通过代码扫描引擎输出扫描结果。

步骤g:整合所述扫描结果以获得扫描结果报告。

步骤h:读取银行业务子系统的负责人信息。

步骤i:根据读取到的银行业务子系统的负责人信息,将所述整合后的扫描结果报告进行实时推送。在本实施例中,可以通过电子邮件的方式进行实时推送(例如,通过电子邮件的方式实时推送至负责人的邮箱或手机中),从而方便相关负责人实时获得扫描结果报告。

本发明计算机存储介质具体实施方式与上述银行系统的静态源代码扫描装置和方法各实施例基本相同,在此不作累述。

本发明提出的银行系统的静态源代码扫描方法、装置及计算机存储介质,通过预设的扫描周期,产生代码扫描的触发请求;当判断需要扫描源代码时,读取银行业务子系统和项目路径、根据读取到的银行业务子系统和项目获取待扫描的源代码、及调用代码扫描引擎对源代码进行扫描。本发明对接银行的配置管理系统,可以读取银行业务子系统和项目路径,并能够通过预设扫描周期,从而可以定期对银行业务子系统的代码进行扫描、并对扫描结果进行整合,以获得整合的扫描结果报告,并可以实时地将整合的扫描结果报告推送给相关的负责人,从而能够及时监控银行系统的静态源代码。

需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1