CN107168876A - 一种静态代码检测的方法及装置 - Google Patents

一种静态代码检测的方法及装置 Download PDF

Info

Publication number
CN107168876A
CN107168876A CN201710339565.6A CN201710339565A CN107168876A CN 107168876 A CN107168876 A CN 107168876A CN 201710339565 A CN201710339565 A CN 201710339565A CN 107168876 A CN107168876 A CN 107168876A
Authority
CN
China
Prior art keywords
result
testing result
component
module
static code
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
CN201710339565.6A
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.)
Hangzhou Shiqu Information and Technology Co Ltd
Original Assignee
Hangzhou Shiqu Information and Technology Co Ltd
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 Hangzhou Shiqu Information and Technology Co Ltd filed Critical Hangzhou Shiqu Information and Technology Co Ltd
Priority to CN201710339565.6A priority Critical patent/CN107168876A/zh
Publication of CN107168876A publication Critical patent/CN107168876A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics

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)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种静态代码检测的方法,该方法根据接收的检测请求,对组件进行静态代码检测,得出检测结果;利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集。该方法对得出的检测结果进行自动解析,并将结果和组件信息相关联,即将组件信息与检测结果整合生成结果集,以通过结果集中的组件信息,进行组件间的跟踪和识别。可见,该方法有利于组件间的跟踪和识别。此外,本发明还公开了一种静态代码检测的装置,与上述方法有一一对应的优点。

Description

一种静态代码检测的方法及装置
技术领域
本发明涉及互联网领域,特别是涉及一种静态代码检测的方法及装置。
背景技术
在软件项目开发中,需要不断更新组件,以完善项目功能。而由于项目的迭代周期较短,业务代码中难免会有代码书写不规范的情况发生。这些书写不规范的代码可能会给项目带来不可估量的损失。
为了提前发现代码中潜在的隐患,一般利用静态代码检测工具来对组件进行检测。但是,现有静态代码检测技术得出的检测结果较简单,即只将得出的检测结果简单输出。特别是对于一些较庞大的项目,其所拆分出来的组件较多,故利用静态代码检测技术得出的结果就也多,且这些结果比较零散,也给跟踪和识别工作更加困难。此时,由于所得到的检测结果较简单,不利于多组件间的跟踪和识别。
发明内容
本发明的目的是提供一种静态代码检测的方法及装置,目的在于解决现有技术静态代码检测结果较简单,不利于组件间的跟踪和识别的问题。
为解决上述技术问题,本发明提供一种静态代码检测的方法,该方法包括:
根据接收的检测请求,对组件进行静态代码检测,得出检测结果;
利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集。
可选地,在所述根据所接收的检测请求,对组件进行静态代码检测,得出检测结果之前还包括:
接收所述组件的升级请求;
根据所述升级请求,自动触发静态代码检测。
可选地,在所述利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集之后还包括:
将所述结果集持久化存储至数据库;
基于所述结果集,判断所述组件是否符合预设升级条件,得出判断结果。
可选地,在所述利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集之后还包括:
以预设分发方式,将所述结果集以及所述判断结果实时分发至相应人员。
可选地,所述利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集包括:
利用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、或技术领域内所公知的任意其它形式的存储介质中。
以上对本发明所提供的静态代码检测方法及装置进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

Claims (10)

1.一种静态代码检测的方法,其特征在于,包括:
根据接收的检测请求,对组件进行静态代码检测,得出检测结果;
利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集。
2.如权利要求1所述的方法,其特征在于,在所述根据所接收的检测请求,对组件进行静态代码检测,得出检测结果之前还包括:
接收所述组件的升级请求;
根据所述升级请求,自动触发静态代码检测。
3.如权利要求2所述的方法,其特征在于,在所述利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集之后还包括:
将所述结果集持久化存储至数据库;
基于所述结果集,判断所述组件是否符合预设升级条件,得出判断结果。
4.如权利要求3所述的方法,其特征在于,在所述利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集之后还包括:
以预设分发方式,将所述结果集以及所述判断结果实时分发至相应人员。
5.如权利要求1至4任一项所述的方法,其特征在于,所述利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集包括:
利用python语言编写的解析脚本,按照错误类型,将所述检测结果进行分类排序;
将所述组件信息与所述检测结果相关联,得出所述结果集;
其中,所述组件信息至少包括组件名称、组件版本号、组件git地址以及组件开发维护人员信息。
6.一种静态代码检测的装置,其特征在于,包括:
检测模块,用于根据接收的检测请求,对组件进行静态代码检测,得出检测结果;
检测结果分析模块,用于利用解析脚本,对所述检测结果进行自动解析,并将所述检测结果与组件信息相关联,得出结果集。
7.如权利要求6所述的装置,其特征在于,还包括:
接收模块,用于接收所述组件的升级请求;
自动触发模块,用于根据所述升级请求,自动触发静态代码检测。
8.如权利要求6所述的装置,其特征在于,还包括:
持久化存储模块,用于将所述结果集持久化存储至数据库;
判断模块,用于基于所述结果集,判断所述组件是否符合预设升级条件,得出判断结果。
9.如权利要求8所述的装置,其特征在于,还包括:
分发模块,用于以预设分发方式,将所述结果集以及所述判断结果实时分发至相应人员。
10.如权利要求6至9任一项所述的装置,其特征在于,所述检测结果分析模块包括:
解析单元,用于利用python语言编写的解析脚本,按照错误类型,将所述检测结果进行分类排序;
组件信息关联单元,用于将所述组件信息与所述检测结果相关联,得出所述结果集;
其中,所述组件信息至少包括组件名称、组件版本号、组件git地址以及组件开发维护人员信息。
CN201710339565.6A 2017-05-15 2017-05-15 一种静态代码检测的方法及装置 Pending CN107168876A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710339565.6A CN107168876A (zh) 2017-05-15 2017-05-15 一种静态代码检测的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710339565.6A CN107168876A (zh) 2017-05-15 2017-05-15 一种静态代码检测的方法及装置

Publications (1)

Publication Number Publication Date
CN107168876A true CN107168876A (zh) 2017-09-15

Family

ID=59816366

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710339565.6A Pending CN107168876A (zh) 2017-05-15 2017-05-15 一种静态代码检测的方法及装置

Country Status (1)

Country Link
CN (1) CN107168876A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108710568A (zh) * 2018-05-05 2018-10-26 中科软评科技(北京)有限公司 静态代码缺陷的检测方法、计算机设备及存储介质
CN111538495A (zh) * 2020-07-13 2020-08-14 深圳开源互联网安全技术有限公司 识别项目中引用Python开源组件的方法及系统、设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103793315A (zh) * 2012-10-29 2014-05-14 Sap股份公司 监视和改善软件开发质量
CN104360861A (zh) * 2014-11-19 2015-02-18 成都实景信息技术有限公司 一种软件代码编写系统
CN105320591A (zh) * 2014-07-25 2016-02-10 腾讯科技(深圳)有限公司 代码检测方法及装置
CN106598804A (zh) * 2016-11-29 2017-04-26 武汉斗鱼网络科技有限公司 异常处理方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103793315A (zh) * 2012-10-29 2014-05-14 Sap股份公司 监视和改善软件开发质量
CN105320591A (zh) * 2014-07-25 2016-02-10 腾讯科技(深圳)有限公司 代码检测方法及装置
CN104360861A (zh) * 2014-11-19 2015-02-18 成都实景信息技术有限公司 一种软件代码编写系统
CN106598804A (zh) * 2016-11-29 2017-04-26 武汉斗鱼网络科技有限公司 异常处理方法及装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108710568A (zh) * 2018-05-05 2018-10-26 中科软评科技(北京)有限公司 静态代码缺陷的检测方法、计算机设备及存储介质
CN111538495A (zh) * 2020-07-13 2020-08-14 深圳开源互联网安全技术有限公司 识别项目中引用Python开源组件的方法及系统、设备
CN111538495B (zh) * 2020-07-13 2020-10-23 深圳开源互联网安全技术有限公司 识别项目中引用Python开源组件的方法及系统、设备

Similar Documents

Publication Publication Date Title
Hecht et al. An empirical study of the performance impacts of android code smells
CN106294134B (zh) 代码的崩溃定位方法及装置
CN103632096B (zh) 一种对设备进行安全检测的方法和装置
US8423960B2 (en) Evaluation of software based on review history
CN107622014A (zh) 测试报告生成方法、装置、可读存储介质和计算机设备
CN107480039A (zh) 一种分布式存储系统的小文件读写性能测试方法及装置
US9690946B2 (en) Security analysis using relational abstraction of data structures
US11019099B2 (en) Method of application malware detection based on dynamic API extraction, and readable medium and apparatus for performing the method
CN105760292B (zh) 一种用于单元测试的断言验证方法和装置
WO2016008398A1 (zh) 程序性能测试方法和装置
CN104268473B (zh) 应用程序检测方法和装置
CN104766015B (zh) 一种基于函数调用的缓冲区溢出漏洞动态检测方法
CN105068921A (zh) 基于App对比分析的Android应用商店可信度评价方法
CN107678936A (zh) 业务系统预先稽查方法、服务器及计算机可读存储介质
CN101393535A (zh) 将运行时事件与组件相关联的方法和系统
US8910127B2 (en) Estimating indirect interface implementation before load time based on directly implemented methods
CN110297776A (zh) 检测报告生成、接收方法、装置、设备及存储介质
CN108897686B (zh) 全分录自动化测试方法和装置
CN110427757A (zh) 一种Android漏洞检测方法、系统及相关装置
US10830818B2 (en) Ensuring completeness of interface signal checking in functional verification
CN110032505A (zh) 软件质量确定装置、软件质量确定方法和软件质量确定程序
CN107168876A (zh) 一种静态代码检测的方法及装置
CN112529575A (zh) 风险预警方法、设备、存储介质及装置
CN110287700A (zh) 一种iOS应用安全分析方法及装置
CN110110521A (zh) 一种基于iOS应用的安全检测方法、装置及系统

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20170915

RJ01 Rejection of invention patent application after publication