CN103577318A - 一种代码检测方法和装置 - Google Patents
一种代码检测方法和装置 Download PDFInfo
- Publication number
- CN103577318A CN103577318A CN201210277956.7A CN201210277956A CN103577318A CN 103577318 A CN103577318 A CN 103577318A CN 201210277956 A CN201210277956 A CN 201210277956A CN 103577318 A CN103577318 A CN 103577318A
- Authority
- CN
- China
- Prior art keywords
- code
- testing result
- information
- different information
- detected
- 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.)
- Granted
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
- Medical Treatment And Welfare Office Work (AREA)
Abstract
本发明公开了一种代码检测方法,包括:针对任一待检测代码,获取所述待检测代码与其对应的旧版本代码之间的差异信息;对所述待检测代码进行静态代码检测,得到所述待检测代码的检测结果;根据所述差异信息对所述待检测代码的检测结果进行过滤,得到所述差异信息的检测结果,并进行展示。本发明同时公开了一种代码检测装置。应用本发明所述的方法和装置,能够提高检测结果的处理效率。
Description
技术领域
本申请涉及检测技术,特别涉及一种代码检测方法和装置。
背景技术
代码是指程序员利用开发工具所支持的语言编写出来的源文件,是一组由字符、符号或信号码元等以离散形式表示信息的明确的规则体系。
在实际应用中,为确保代码的可用性等,在开发出代码之后,通常还需要对其进行各种检测,如静态代码检测。
静态代码检测是指在不运行代码的情况下,通过词法分析、语法分析、控制流分析等技术对代码进行扫描,验证代码是否满足规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
很多情况下,需要对之前开发的旧版本代码进行升级,即开发得到新版本代码,无论是旧版本代码还是新版本代码,在开发完成之后,均需要对其进行静态代码检测,并且,开发人员需要针对检测结果中的各条问题信息,即各个问题分别进行处理,以克服代码中存在的问题;
而静态代码检测得到的检测结果中通常会包括方方面面很多条问题信息,而有的问题信息可能并不是开发人员所关注、所在意的,无需进行处理,另外,由于静态代码检测技术本身的缺陷,检测结果中经常会包括一些误报的问题信息,这些问题信息也无需进行处理;
当开发人员开发出旧版本代码并得到其检测结果之后,会针对其中的每条问题信息分别进行分析,以识别出哪些问题信息需要进行处理,哪些无需进行处理,并对需要进行处理的问题信息进行相应处理,以克服代码中存在的问题;这样,当开发人员开发出新版本代码并得到其检测结果之后,该检测结果中仍然会包括之前的旧版本代码的检测结果中包括的无需进行处理的问题信息,从而导致开发人员需要针对这些问题信息进行重复识别等工作,进而增大了开发人员的工作量,降低了开发人员对检测结果的处理效率。
发明内容
有鉴于此,本发明提供了一种代码检测方法和装置,能够提高检测结果的处理效率。
为达到上述目的,本发明的技术方案是这样实现的:
一种代码检测方法,包括:
针对任一待检测代码,获取所述待检测代码与其对应的旧版本代码之间的差异信息;
对所述待检测代码进行静态代码检测,得到所述待检测代码的检测结果;
根据所述差异信息对所述待检测代码的检测结果进行过滤,得到所述差异信息的检测结果,并进行展示。
一种代码检测装置,包括:
获取模块,用于针对任一待检测代码,获取所述待检测代码与其对应的旧版本代码之间的差异信息,并发送给过滤模块;
检测模块,用于对所述待检测代码进行静态代码检测,得到所述待检测代码的检测结果,并发送给所述过滤模块;
所述过滤模块,用于根据所述差异信息对所述待检测代码的检测结果进行过滤,得到所述差异信息的检测结果,并发送给展示模块;
所述展示模块,用于展示所述差异信息的检测结果。
总之,采用本发明所述方案,能够提高检测结果的处理效率。
附图说明
图1为本发明代码检测方法实施例的流程图。
图2为本发明代码检测装置实施例的组成结构示意图。
具体实施方式
针对现有技术中存在的问题,本发明中提出一种改进后的代码检测方案。
为使本发明的技术方案更加清楚、明白、以下参照附图并举实施例,对本发明所述方案作进一步地详细说明。
图1为本发明代码检测方法实施例的流程图。如图1所示,包括以下步骤:
步骤11:针对任一待检测代码,获取待检测代码与其对应的旧版本代码之间的差异信息。
代码通常由一个个有效代码行组成。
如何获取待检测代码(即新版本代码)与旧版本代码之间的差异信息不作限制,比如:可针对待检测代码中的每个有效代码行,分别确定在旧版本代码中是否存在相同的有效代码行,如果否,则将该有效代码行作为差异信息。
因此,差异信息中将包括:至少一个有效代码行。
对于待检测代码中的一个有效代码行,相比于旧版本代码,如果该有效代码行是新增的,或者是对旧版本代码中的相应有效代码行进行修改后的,那么,对应于这两种情况,在旧版本代码中均不会存在与该有效代码行相同的有效代码行。
步骤12:对待检测代码进行静态代码检测,得到待检测代码的检测结果。
本步骤中,对待检测代码进行全量的静态代码检测。
常用的静态代码检测方式包括:FindBugs方式、PMD方式,以及CheckStyle方式等。其中,FindBugs方式主要通过检查类文件等,将字节码与一组缺陷模式进行比对,从而发现代码缺陷;PMD方式主要通过内置的编码规则来对代码进行静态检测;CheckStyle方式主要对代码进行编码风格等方面的检测。
在实际应用中,具体采用哪种或哪几种静态代码检测方式对待检测代码进行静态代码检测可根据实际需要而定。但对旧版本代码进行静态代码检测时所采用的静态代码检测方式需要与对待检测代码进行静态代码检测时所采用的静态代码检测方式相同。
得到的待检测代码的检测结果中可能包括如下问题:潜在的错误、警告、不推荐的写法等等。
需要说明的是,在实际应用中,可先执行步骤11,再执行步骤12,也可先执行步骤12,再执行步骤11,还可同时执行步骤11和步骤12,图1所示顺序仅为一种可能的实现方式,并不用于限制本发明的技术方案。
步骤13:根据差异信息对待检测代码的检测结果进行过滤,得到差异信息的检测结果。
本步骤中,可利用步骤11中获取到的差异信息,对步骤12中获取到的待检测代码的检测结果进行过滤,即从待检测代码的检测结果中提取出对应于差异信息的检测结果。
如前所述,差异信息中将包括:至少一个有效代码行,因此,可针对待检测代码的检测结果中的每条问题信息,分别确定其对应的出现问题的有效代码行中是否包括位于差异信息中的有效代码行,如果是,则提取出该问题信息;并利用提取出的所有问题信息组成差异信息的检测结果。
通过对待检测代码进行静态代码检测,除了可得到各条问题信息外,还可得到每条问题信息分别对应的出现问题的有效代码行。一条问题信息对应的出现问题的有效代码行数可能为一个,也可能为多个。本发明所述方案中,针对待检测代码的检测结果中的每条问题信息,只要确定其对应的出现问题的有效代码行中包括位于差异信息中的有效代码行,无论是指出现问题的有效代码行全部位于差异信息中,还是只有部分位于差异信息中,均可提取出该问题信息。
步骤14:对差异信息的检测结果进行展示。
可利用差异信息的检测结果中的各条问题信息生成一个报告文件,并将该报告文件展示给开发人员。
如前所述,静态代码检测得到的检测结果中通常会包括方方面面很多条问题信息,而有的问题信息可能并不是开发人员所关注、所在意的,无需进行处理,那么,差异信息的检测结果中也可能会包括有无需进行处理的问题信息。
相应地,为了减少开发人员的工作量,在执行步骤14之前,可根据预定规则,确定差异信息的检测结果中是否存在无需进行展示的问题信息,无需进行展示也即无需进行处理,如果是,则将确定出的无需进行展示的问题信息从差异信息的检测结果中删除,这样,开发人员将不会看到这些被删除的问题信息,从而也无需对其进行处理。具体依据何种规则来确定哪些问题信息为无需进行展示的问题信息可根据实际需要而定。
另外,还可对差异信息的检测结果中的各条问题信息进行分类,并针对不同的类别,设置不同的优先级;相应地,在将差异信息的检测结果中的各条问题信息进行展示时,所属类别的优先级越高,展示顺序越靠前。
举例说明:
假设差异信息的检测结果中共包括6条问题信息,为便于表述,分别将其称之为问题信息1、问题信息2、问题信息3、问题信息4、问题信息5和问题信息6;
其中,问题信息1和问题信息6属于同一类别,优先级最高,问题信息2和问题信息5属于同一类别,优先级次高,问题信息3和问题信息4属于同一类别,优先级最低;
那么,6条问题信息的展示顺序可为:问题信息1、问题信息6、问题信息2、问题信息5、问题信息3、问题信息4;同一类别中的两个问题信息的展示顺序可互换。
通常来说,对于不同的类别来说,其中的问题越急需处理,或者说问题越严重,其优先级越高,这样,可使得开发人员优先对某些问题进行处理。
再有,本发明所述方案中,还可在待检测代码中,对差异信息的检测结果中的各条问题信息对应的出现问题的有效代码行进行标注,其中,根据各条问题信息所属类别的不同,可采用不同的标注方式,以便当开发人员查看待检测代码时,可以直观地了解到哪些有效代码行需要进行修改,以及被标注的有效代码行分别对应于什么问题。
参照之前的举例,可将问题信息1和问题信息6对应的出现问题的有效代码行标注为红色,将问题信息2和问题信息5对应的出现问题的有效代码行标注为黄色,将问题信息3和问题信息4对应的出现问题的有效代码行标注为蓝色,开发人员预先可知红色对应于什么问题、黄色对应于什么问题,以及蓝色对应于什么问题。
至此,即完成了关于本发明方法实施例的介绍。
基于上述介绍,图2为本发明代码检测装置实施例的组成结构示意图。如图2所示,包括:
获取模块21,用于针对任一待检测代码,获取待检测代码与其对应的旧版本代码之间的差异信息,并发送给过滤模块23;
检测模块22,用于对待检测代码进行静态代码检测,得到待检测代码的检测结果,并发送给过滤模块23;
过滤模块23,用于根据差异信息对待检测代码的检测结果进行过滤,得到差异信息的检测结果,并发送给展示模块24;
展示模块24,用于展示差异信息的检测结果。
其中,所述差异信息中包括:至少一个有效代码行;
相应地,过滤模块23中可具体包括(为简化附图,未图示):
提取单元,用于针对待检测代码的检测结果中的每条问题信息,分别确定其对应的出现问题的有效代码行中是否包括位于差异信息中的有效代码行,如果是,则提取出该问题信息,并发送给组成单元;
组成单元,用于利用提取出的所有问题信息组成差异信息的检测结果,并发送给展示模块24。
另外,展示模块24可进一步用于,
在展示差异信息的检测结果之前,根据预定规则,确定差异信息的检测结果中是否存在无需进行展示的问题信息,如果是,则将确定出的无需进行展示的问题信息从差异信息的检测结果中删除。
展示模块24还可进一步用于,
对差异信息的检测结果中的各条问题信息进行分类,针对不同的类别,设置不同的优先级;将差异信息的检测结果中的各条问题信息进行展示,其中,所属类别的优先级越高,展示顺序越靠前。
再有,图2所示装置中还可进一步包括:
标注模块25,用于从展示模块24中获取差异信息的检测结果,并在待检测代码中,对差异信息的检测结果中的各条问题信息对应的出现问题的有效代码行进行标注,其中,根据各条问题信息所属类别的不同,采用不同的标注方式。
图2所示装置实施例的具体工作流程请参照前述方法实施例中的相应说明,此处不再赘述。
总之,采用本发明所述方案,针对新版本代码,可获取到其与旧版本代码之间的差异信息的检测结果,从而使得开发人员仅需针对差异信息的检测结果进行处理即可,无需进行重复识别等工作,进而减少了开发人员的工作量,提高了开发人员对检测结果的处理效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种代码检测方法,其特征在于,包括:
针对任一待检测代码,获取所述待检测代码与其对应的旧版本代码之间的差异信息;
对所述待检测代码进行静态代码检测,得到所述待检测代码的检测结果;
根据所述差异信息对所述待检测代码的检测结果进行过滤,得到所述差异信息的检测结果,并进行展示。
2.根据权利要求1所述的方法,其特征在于,所述差异信息中包括:至少一个有效代码行;所述根据所述差异信息对所述待检测代码的检测结果进行过滤,得到所述差异信息的检测结果包括:
针对所述待检测代码的检测结果中的每条问题信息,分别确定其对应的出现问题的有效代码行中是否包括位于所述差异信息中的有效代码行,如果是,则提取出该问题信息;
利用提取出的所有问题信息组成所述差异信息的检测结果。
3.根据权利要求2所述的方法,其特征在于,所述进行展示之前,进一步包括:
根据预定规则,确定所述差异信息的检测结果中是否存在无需进行展示的问题信息,如果是,则将确定出的无需进行展示的问题信息从所述差异信息的检测结果中删除。
4.根据权利要求2或3所述的方法,其特征在于,所述进行展示包括:
对所述差异信息的检测结果中的各条问题信息进行分类,针对不同的类别,设置不同的优先级;
将所述差异信息的检测结果中的各条问题信息进行展示,其中,所属类别的优先级越高,展示顺序越靠前。
5.根据权利要求4所述的方法,其特征在于,该方法进一步包括:
在所述待检测代码中,对所述差异信息的检测结果中的各条问题信息对应的出现问题的有效代码行进行标注,其中,根据各条问题信息所属类别的不同,采用不同的标注方式。
6.一种代码检测装置,其特征在于,包括:
获取模块,用于针对任一待检测代码,获取所述待检测代码与其对应的旧版本代码之间的差异信息,并发送给过滤模块;
检测模块,用于对所述待检测代码进行静态代码检测,得到所述待检测代码的检测结果,并发送给所述过滤模块;
所述过滤模块,用于根据所述差异信息对所述待检测代码的检测结果进行过滤,得到所述差异信息的检测结果,并发送给展示模块;
所述展示模块,用于展示所述差异信息的检测结果。
7.根据权利要求6所述的装置,其特征在于,所述差异信息中包括:至少一个有效代码行;所述过滤模块中包括:
提取单元,用于针对所述待检测代码的检测结果中的每条问题信息,分别确定其对应的出现问题的有效代码行中是否包括位于所述差异信息中的有效代码行,如果是,则提取出该问题信息,并发送给组成单元;
所述组成单元,用于利用提取出的所有问题信息组成所述差异信息的检测结果,并发送给所述展示模块。
8.根据权利要求7所述的装置,其特征在于,所述展示模块进一步用于,
在展示所述差异信息的检测结果之前,根据预定规则,确定所述差异信息的检测结果中是否存在无需进行展示的问题信息,如果是,则将确定出的无需进行展示的问题信息从所述差异信息的检测结果中删除。
9.根据权利要求7或8所述的装置,其特征在于,所述展示模块进一步用于,
对所述差异信息的检测结果中的各条问题信息进行分类,针对不同的类别,设置不同的优先级;将所述差异信息的检测结果中的各条问题信息进行展示,其中,所属类别的优先级越高,展示顺序越靠前。
10.根据权利要求9所述的装置,其特征在于,该装置中进一步包括:
标注模块,用于从所述展示模块中获取所述差异信息的检测结果,并在所述待检测代码中,对所述差异信息的检测结果中的各条问题信息对应的出现问题的有效代码行进行标注,其中,根据各条问题信息所属类别的不同,采用不同的标注方式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210277956.7A CN103577318B (zh) | 2012-08-07 | 2012-08-07 | 一种代码检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210277956.7A CN103577318B (zh) | 2012-08-07 | 2012-08-07 | 一种代码检测方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103577318A true CN103577318A (zh) | 2014-02-12 |
CN103577318B CN103577318B (zh) | 2018-01-30 |
Family
ID=50049142
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210277956.7A Active CN103577318B (zh) | 2012-08-07 | 2012-08-07 | 一种代码检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103577318B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104268353A (zh) * | 2014-10-10 | 2015-01-07 | 中国农业银行股份有限公司 | 一种规范检测方法及装置 |
CN104765692A (zh) * | 2015-04-29 | 2015-07-08 | 北京嘀嘀无限科技发展有限公司 | 用于自动化测试软件的方法及设备 |
CN106096635A (zh) * | 2016-06-06 | 2016-11-09 | 重庆大学 | 基于阈值操作的代价敏感神经网络的警告分类方法 |
CN107368313A (zh) * | 2017-07-18 | 2017-11-21 | 腾讯科技(深圳)有限公司 | 代码检测方法、装置及电子设备 |
CN107688527A (zh) * | 2016-08-05 | 2018-02-13 | 华为技术有限公司 | 缺陷显示方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1758220A (zh) * | 2004-10-08 | 2006-04-12 | 华为技术有限公司 | 一种升级软件版本的方法 |
CN101122862A (zh) * | 2006-08-11 | 2008-02-13 | 环达电脑(上海)有限公司 | 后启动补丁式安全升级bios的方法 |
CN101286119A (zh) * | 2008-05-27 | 2008-10-15 | 华耀环宇科技(北京)有限公司 | 一种通过分析代码变化确定功能点变化的方法 |
US20080288771A1 (en) * | 2007-05-18 | 2008-11-20 | Verimatrix, Inc. | System and method for defining programmable processing steps applied when protecting the data |
-
2012
- 2012-08-07 CN CN201210277956.7A patent/CN103577318B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1758220A (zh) * | 2004-10-08 | 2006-04-12 | 华为技术有限公司 | 一种升级软件版本的方法 |
CN101122862A (zh) * | 2006-08-11 | 2008-02-13 | 环达电脑(上海)有限公司 | 后启动补丁式安全升级bios的方法 |
US20080288771A1 (en) * | 2007-05-18 | 2008-11-20 | Verimatrix, Inc. | System and method for defining programmable processing steps applied when protecting the data |
CN101286119A (zh) * | 2008-05-27 | 2008-10-15 | 华耀环宇科技(北京)有限公司 | 一种通过分析代码变化确定功能点变化的方法 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104268353A (zh) * | 2014-10-10 | 2015-01-07 | 中国农业银行股份有限公司 | 一种规范检测方法及装置 |
CN104268353B (zh) * | 2014-10-10 | 2017-05-31 | 中国农业银行股份有限公司 | 一种规范检测方法及装置 |
CN104765692A (zh) * | 2015-04-29 | 2015-07-08 | 北京嘀嘀无限科技发展有限公司 | 用于自动化测试软件的方法及设备 |
CN104765692B (zh) * | 2015-04-29 | 2018-11-06 | 北京嘀嘀无限科技发展有限公司 | 用于自动化测试软件的方法及设备 |
CN106096635A (zh) * | 2016-06-06 | 2016-11-09 | 重庆大学 | 基于阈值操作的代价敏感神经网络的警告分类方法 |
CN106096635B (zh) * | 2016-06-06 | 2019-11-15 | 重庆大学 | 基于阈值操作的代价敏感神经网络的警告分类方法 |
CN107688527A (zh) * | 2016-08-05 | 2018-02-13 | 华为技术有限公司 | 缺陷显示方法及装置 |
CN107688527B (zh) * | 2016-08-05 | 2020-08-07 | 华为技术有限公司 | 缺陷显示方法及装置 |
CN107368313A (zh) * | 2017-07-18 | 2017-11-21 | 腾讯科技(深圳)有限公司 | 代码检测方法、装置及电子设备 |
CN107368313B (zh) * | 2017-07-18 | 2018-09-11 | 腾讯科技(深圳)有限公司 | 代码检测方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN103577318B (zh) | 2018-01-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103577318A (zh) | 一种代码检测方法和装置 | |
CN107590070B (zh) | 一种业务流程调试方法及装置 | |
CN103077062A (zh) | 一种代码改动的检测方法和装置 | |
US20090319995A1 (en) | Enhancing source code debugging and readability using visual symbols | |
CN110287125B (zh) | 基于图像识别的软件例行化测试方法及装置 | |
CN103530223A (zh) | 一种自动生成单元测试用例的方法及装置 | |
CN110262783B (zh) | 一种接口生成方法、装置及终端设备 | |
EP3001319A1 (en) | Method for detecting libraries in program binaries | |
CN101561806B (zh) | Db2数据库操作的信息提取和审计方法及其装置、系统 | |
Xie et al. | Psychologically-inspired, unsupervised inference of perceptual groups of GUI widgets from GUI images | |
CN103744890A (zh) | 日志分离方法及装置 | |
CN105183476A (zh) | 一种跨平台应用程序的构建方法和装置 | |
CN103150200A (zh) | 一种计算机语言转换系统及c语言到msvl语言的转换方法 | |
CN106708704A (zh) | 一种对崩溃日志进行分类的方法和装置 | |
CN103914654A (zh) | 一种对Android ART运行时代码进行恶意代码检测的方法及系统 | |
WO2017141893A1 (ja) | ソフトウェア分析装置及びソフトウェア分析方法 | |
WO2018069950A1 (ja) | ログ分析方法、システムおよびプログラム | |
CN105487973B (zh) | 连续捕获程序异常的处理器异常测试方法 | |
CN106845235A (zh) | 一种基于机器学习方法的安卓平台回调函数检测方法 | |
CN110231907A (zh) | 电子阅读的显示方法、电子设备、计算机设备及介质 | |
CN106354636A (zh) | 一种检测代码的方法及装置 | |
WO2021038704A1 (ja) | バックドア検査装置、バックドア検査方法、及び非一時的なコンピュータ可読媒体 | |
CN107291614B (zh) | 文件异常检测方法和电子设备 | |
CN113221888B (zh) | 车牌号管理系统测试方法、装置、电子设备及存储介质 | |
CN104866769A (zh) | 一种基于业务系统主机指纹采集的漏洞分析方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211230 Address after: 16F, Kungang science and technology building, 777 Huancheng South Road, Xishan District, Kunming, Yunnan 650100 Patentee after: Yunnan Tengyun Information Industry Co.,Ltd. Address before: 2, 518044, East 403 room, SEG science and Technology Park, Zhenxing Road, Shenzhen, Guangdong, Futian District Patentee before: TENCENT TECHNOLOGY (SHENZHEN) Co.,Ltd. |