本发明涉及互联网领域,特别是涉及一种静态代码检测的方法及装置。
背景技术:
在软件项目开发中,需要不断更新组件,以完善项目功能。而由于项目的迭代周期较短,业务代码中难免会有代码书写不规范的情况发生。这些书写不规范的代码可能会给项目带来不可估量的损失。
为了提前发现代码中潜在的隐患,一般利用静态代码检测工具来对组件进行检测。但是,现有静态代码检测技术得出的检测结果较简单,即只将得出的检测结果简单输出。特别是对于一些较庞大的项目,其所拆分出来的组件较多,故利用静态代码检测技术得出的结果就也多,且这些结果比较零散,也给跟踪和识别工作更加困难。此时,由于所得到的检测结果较简单,不利于多组件间的跟踪和识别。
技术实现要素:
本发明的目的是提供一种静态代码检测的方法及装置,目的在于解决现有技术静态代码检测结果较简单,不利于组件间的跟踪和识别的问题。
为解决上述技术问题,本发明提供一种静态代码检测的方法,该方法包括:
根据接收的检测请求,对组件进行静态代码检测,得出检测结果;
利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集。
可选地,在所述根据所接收的检测请求,对组件进行静态代码检测,得出检测结果之前还包括:
接收所述组件的升级请求;
根据所述升级请求,自动触发静态代码检测。
可选地,在所述利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集之后还包括:
将所述结果集持久化存储至数据库;
基于所述结果集,判断所述组件是否符合预设升级条件,得出判断结果。
可选地,在所述利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集之后还包括:
以预设分发方式,将所述结果集以及所述判断结果实时分发至相应人员。
可选地,所述利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集包括:
利用python语言编写的解析脚本,按照错误类型,将所述检测结果进行分类排序;
将所述组件信息与所述检测结果相关联,得出所述结果集;
其中,所述组件信息至少包括组件名称、组件版本号、组件git地址以及组件开发维护人员信息。
此外,本发明还公开了一种静态代码检测的装置,该装置包括:
检测模块,用于根据接收的检测请求,对组件进行静态代码检测,得出检测结果;
检测结果分析模块,用于利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集。
可选地,还包括:
接收模块,用于接收所述组件的升级请求;
自动触发模块,用于根据所述升级请求,自动触发静态代码检测。
可选地,还包括:
持久化存储模块,用于将所述结果集持久化存储至数据库;
判断模块,用于基于所述结果集,判断所述组件是否符合预设升级条件,得出判断结果。
可选地,还包括:
分发模块,用于以预设分发方式,将所述结果集以及所述判断结果实时分发至相应人员。
可选地,所述检测结果分析模块包括:
解析单元,用于利用python语言编写的解析脚本,按照错误类型,将所述检测结果进行分类排序;
组件信息关联单元,用于将所述组件信息与所述检测结果相关联,得出所述结果集;
其中,所述组件信息至少包括组件名称、组件版本号、组件git地址以及组件开发维护人员信息。
本发明所提供的静态代码检测的方法及装置,根据接收的检测请求,对组件进行静态代码检测,得出检测结果;利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集。本申请对得出的检测结果进行自动解析,并将结果和组件信息相关联,即将组件信息与检测结果整合生成结果集,以通过结果集中的组件信息,进行组件间的跟踪和识别。可见,本申请有利于组件间的跟踪和识别。
附图说明
为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所提供的静态代码检测方法的一种具体实施方式的流程示意图;
图2为本发明实施例所提供的静态代码检测装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,图1为本发明实施例所提供的静态代码检测方法的一种具体实施方式的流程示意图,该方法包括以下步骤:
步骤101:根据接收的检测请求,对组件进行静态代码检测,得出检测结果;
具体地,可以利用静态代码检测工具来对组件代码进行静态代码检测。更具体地,静态代码检测工具可以为infer。此时,由静态代码检测工具得出的检测结果较简单,没有和组件信息相关联,也没有对检测结果进行分析。
可以理解的是,静态代码检测可以是人为触发,即手动触发静态代码检测,此时,所接收到的检测请求是人工生成的;优先地,也可以是自动触发静态代码检测。
作为一种具体实施方式,在上述根据所接收的检测请求,对组件进行静态代码检测,得出检测结果之前还可以包括:接收所述组件的升级请求;根据所述升级请求,自动触发静态代码检测。
具体地,在jenkins接收到组件升级请求后,jenkins可以根据所接收到的组件升级请求,可以将组件的相关信息(例如组件开发维护任务信息、组件版本信息以及组件git仓库信息)传送至预先部署的job,自动触发组件的静态代码检测流程。
可以看出,相较于人工触发,自动触发静态代码检测便利性较高,效率也较高。
步骤102:利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集。
需要说明的是,上述组件信息具体可以是指组件名称、组件版本号、组件git地址以及组件开发维护人员信息等。
上述结果集可以是指将组件信息和检测结果整合到一起,并对检测结果进行解析后得出的结果集。而对检测结果的解析可以是指分析所得出的检测结果的错误类型以及错误个数等。
作为一种具体实施方式,上述利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集的过程具体可以为:利用python语言编写的解析脚本,按照错误类型,将所述检测结果进行分类排序;将所述组件信息与所述检测结果相关联,得出所述结果集;其中,所述组件信息至少包括组件名称、组件版本号、组件git地址以及组件开发维护人员信息。
可以理解的是,上述错误类型可以是具体是指检测结果的错误类型,例如,空指针类以及io操作类等。当然,在将检测结果分类别后,也可以统计各个错误类别的个数,然后根据一定的排列规则来进行排序。
显而易见地,解析脚本的编写语言并不限于python语言,而组件信息也不限于上述所提及的信息类别,在此不作限定。
可以看出,按照错误类型,将检测结果进行分类排序,且将组件开发维护人员信息和组件名称等信息与检测结果相关联,可以便于开发维护人员识别和跟踪检测结果。
本发明实施例所提供的静态代码检测的方法,根据接收的检测请求,对组件进行静态代码检测,得出检测结果;利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集。该方法对得出的检测结果进行自动解析,并将结果和组件信息相关联,即将组件信息与检测结果整合生成结果集,以通过结果集中的组件信息,进行组件间的跟踪和识别。
在上述实施例的基础上,在上述利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集之后还可以包括:将所述结果集持久化存储至数据库;基于所述结果集,判断所述组件是否符合预设升级条件,得出判断结果。
具体地,可以利用脚本,将所得出的结果集持久化存储至数据库中,利用jenkins的组件升级job判断当前组件是否达到预设升级条件。
需要说明的是,上述预设升级条件具体可以为不能含有空指针类的隐患代码,当然,也可以具体表现为其它升级标准。
上述判断结果可以是指表征组件是否能升级的依据,例如,可以表现为有无修改项,即当检测结果中没有需要修改项时,判断组件可升级,而当检测结果中有需要修改项时,则可判断组件不能升级。
显而易见地,上述数据库可以具体为mongodb数据库,也可以具体为其它类型的数据库,在此不作限定。
可以看出,本发明实施例所提供的静态代码检测方法,将结果集持久化存储,可以便于开发人员的修改和查找。而将结果集作为升级与否的依据,可以提高检测结果的利用价值。
在上述任一实施例的基础上,在上述利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集之后还可以包括:以预设分发方式,将所述结果集以及所述判断结果实时分发至相应人员。
需要说明的是,上述预设分发方式可以具体为邮件,即在将结果集转换为易于阅读的书面形式之后,以邮件形式,将结果集发送给开发维护人员;也可以具体为即时通讯软件,即在将结果集和判断结果转换为易于阅读的书面形式之后,以即时通讯软件消息,将结果集和判断结果发送给开发维护人员;当然,还可以具体为其它分发方式,在此不作限定。
可以看出,本发明实施例所提供的静态代码检测方法,通过将得出的结果集以及组件是否可升级的判断结果自动分发给相关人员,可以使得开发维护人员及时了解检测情况。
下面对本发明实施例提供的静态代码检测装置进行介绍,下文描述的静态代码检测装置与上文描述的静态代码检测方法可相互对应参照。
图2为本发明实施例所提供的静态代码检测装置的结构框图,参照图2静态代码检测装置可以包括:
检测模块201,用于根据接收的检测请求,对组件进行静态代码检测,得出检测结果;
检测结果分析模块202,用于利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集。
可选地,还包括:
接收模块,用于接收所述组件的升级请求;
自动触发模块,用于根据所述升级请求,自动触发静态代码检测。
可选地,还包括:
持久化存储模块,用于将所述结果集持久化存储至数据库;
判断模块,用于基于所述结果集,判断所述组件是否符合预设升级条件,得出判断结果。
可选地,还包括:
分发模块,用于以预设分发方式,将所述结果集以及所述判断结果实时分发至相应人员。
可选地,所述检测结果分析模块包括:
解析单元,用于利用python语言编写的解析脚本,按照错误类型,将所述检测结果进行分类排序;
组件信息关联单元,用于将所述组件信息与所述检测结果相关联,得出所述结果集;
其中,所述组件信息至少包括组件名称、组件版本号、组件git地址以及组件开发维护人员信息。
本发明实施例所提供的静态代码检测的装置,根据接收的检测请求,对组件进行静态代码检测,得出检测结果;利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集。该装置对得出的检测结果进行自动解析,并将结果和组件信息相关联,即将组件信息与检测结果整合生成结果集,以通过结果集中的组件信息,进行组件间的跟踪和识别。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的静态代码检测方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。