一种代码检查方法及装置与流程

文档序号:12363503阅读:180来源:国知局
本发明涉及代码开发
技术领域
:,尤其涉及一种代码检查方法及装置。
背景技术
::目前,在进行网银业务功能开发时,存在着自有人员新员工(1-2年)比例过高(70%),同时大量使用外援进行开发的现象,大约有40%的代码由外援完成,但是外援也多为新引入人员,存在开发经验不足、编写代码不规范的问题。每个开发批次网银代码量巨大,代码复查人员技能偏低,集中复查占用时间多,人工复查难以复查所有代码。同时,网银产品规范文档有164份,代码复查点规模庞大,其中checklist超过200条,若单靠个人经验复查,可能会遗漏检查点,因此迫切需要开发一种代码复查工具来辅助网银业务功能开发。技术实现要素:为解决上述技术问题,本发明提供了一种代码检查方法及装置。一方面,本发明提供了一种代码检查方法,所述代码检查方法包括:获取待修改代码文件列表;根据预设的代码分析规则,对所述待修改代码文件列表进行错误类检查、警告类检查及提示类检查,生成检查结果并输出。在一实施例中,所述代码检查方法还包括:获取已修改代码文件列表;根据所述待修改代码文件列表及已修改代码文件列表,生成变更文件列表;根据预设的代码分析规则,对所述变更文件列表进行错误类检查、警告类检查及提示类检查,生成检查结果并输出。在一实施例中,根据预设的代码分析规则,对所述待修改代码文件列表进行错误类检查,生成检查结果并输出,包括:判断所述待修改代码文件列表中单个应用范围内的xml文件中是否存在重复的类标识符;当所述XML文件中存在重复的类标识符时,生成错误提示并输出,所述错误提示包括:重复的类标识符、重复类标识符的数量、重复的类标识符所在位置及所在文件名称。在一实施例中,根据预设的代码分析规则,对所述待修改代码文件列表进行错误类检查,生成检查结果并输出,包括:判断所述待修改代码文件列表中xml文件内的类定义中是否存在相同的引入参数;当所述类定义中存在相同的引入参数时,生成错误提示,所述错误提示包括含有相同引入参数的类定义所在的文件名称、文件位置及文件数量。在一实施例中,根据预设的代码分析规则,对所述待修改代码文件列表进行警告类检查,生成检查结果并输出,包括:判断所述待修改代码文件列表中xml接口定义文件中的头文件与体文件之间是否存在数据域名重复;当所述头文件与体文件之间存在数据域名重复时,生成警告提示,所述警告提示包括:重复的数据域名、重复数据域名所在文件的文件名称、文件位置及文件数量。在一实施例中,根据预设的代码分析规则,对所述待修改代码文件列表进行警告类检查,生成检查结果并输出,包括:判断所述待修改代码文件列表中的xml文件中是否含有已废弃代码;当所述xml文件中含有已废弃代码时,生成警告提示,所述警告提示包括含有已废弃代码的xml文件的文件名称及文件数量。在一实施例中,根据预设的代码分析规则,对所述待修改代码文件列表进行提醒类检查,生成检查结果并输出,包括:判断所述待修改代码文件列表中的引用关系定义文件中所含的版本号是否与预设版本号相同,所述引用关系定义文件为xml文件;当所述引用关系定义文件中所含的版本号与所述预设版本号不同时,生成提醒通知,所述提醒通知包括与所述预设版本号不同的版本号的数量及其所在位置。在一实施例中,根据预设的代码分析规则,对所述变更文件列表进行错误类检查,生成检查结果并输出,包括:判断所述变更文件列表中java文件的文件名结尾是否符合预设网银命名规范;当所述java文件的文件名结尾不符合预设网银命名规范时,生成错误提示并输出,所述错误提示包括文件名结尾不符合预设网银命名规范的java文件的文件名称、文件位置及文件数量。在一实施例中,根据预设的代码分析规则,对所述变更文件列表进行错误类检查,生成检查结果并输出,包括:查询所述变更文件列表中的解析输出接口文件中是否定义有循环体;当所述解析输出接口文件中定义有循环体时,判断所循环体中的忽略异常属性是否为真;当所述循环体中的忽略异常属性为真时,生成错误提示,所述错误提示包括忽略异常属性为真的循环体所在位置及其所在文件名称、文件数量。在一实施例中,根据预设的代码分析规则,对所述变更文件列表进行错误类检查,生成检查结果并输出,包括:判断所述变更文件列表中的产品文件内的接口方法的最后一个参数是否为终端标识对象,所述产品文件为java文件;当所述产品文件内的接口方法的最后一个参数不为终端标识对象时,生成错误提示,所述错误提示包括最后一个参数不为终端标识对象的接口方法所在产品文件的文件名称、文件数量及文件所在位置。在一实施例中,根据预设的代码分析规则,对所述变更文件列表进行警告类检查,生成检查结果并输出,包括:判断所述变更文件列表中的java文件、xml文件、sql文件及shell文件的文件名是否符合预设命名规范;当所述java文件、xml文件、sql文件及shell文件的文件名有至少一个不符合所述预设命名规范时,生成警告提示,所述警告提示包括文件名不符合预设命名规范的文件名称、文件位置及文件数量。在一实施例中,根据预设的代码分析规则,对所述变更文件列表进行警告类检查,生成检查结果并输出,包括:判断所述变更文件列表中的各java文件中的代码注释行数占当前java文件中所含代码总行数的比例是否小于预设值;当小于所述预设值时,生成警告提示,所述警告提示包括代码注释行数所占比例小于所述预设值的java文件的文件名称、文件位置及文件数量。在一实施例中,根据预设的代码分析规则,对所述变更文件列表进行提醒类检查,生成检查结果并输出,包括:根据预设的大表集合,判断所述变更文件列表中数据库语句定义文件中的sql语句是否涉及大表,所述数据库语句定义文件为xml文件;当所述数据库语句定义文件中的sql语句涉及大表时,生成提醒通知,所述提醒通知包括涉及大表的sql语句的所在位置、所在文件名称、文件位置及文件数量。在一实施例中,根据预设的代码分析规则,对所述变更文件列表进行提醒类检查,生成检查结果并输出,包括:判断所述变更文件列表中网银产品项目文件中的代码是否包含预设关键字,所述预设关键字包括机构号、客户号、流水号、编号、序号、渠道、证件类型、证件编码及虚拟柜员中的至少一种;当所述网银产品项目文件中的代码包含所述预设关键字时,生成提醒通知,所述提醒通知包括所含预设关键字的数量、含有预设关键字的文件名称及文件位置。在一实施例中,根据预设的代码分析规则,对所述变更文件列表进行提醒类检查,生成检查结果并输出,包括:判断所述变更文件列表中各java文件中的代码是否包含==或equals;当所述java文件中的代码包含==或equals时,生成提醒通知,所述提醒通知包括==或equals在所述java文件中的位置及数量。在一实施例中,根据预设的代码分析规则,对所述变更文件列表进行提醒类检查,生成检查结果并输出,包括:判断变更文件列表中是否存在以网银产品项目开头的输入接口定义文件;当所述变更文件列表中存在以网银产品项目开头的输入接口定义文件时,生成提醒通知,所述提醒通知包括所述输入接口定义文件的文件名称、文件位置及文件数量。在一实施例中,根据预设的代码分析规则,对所述变更文件列表进行提醒类检查,生成检查结果并输出,包括:判断所述变更文件列表中是否包含java文件、和/或xml文件、和/或sql文件、和/或shell文件;当所述变更文件列表中包含变更的java文件、和/或xml文件、和/或sql文件、和/或shell文件时,生成提醒通知,所述提醒通知包括变更的文件名称及文件数量。另一方面,本发明实施还提供了一种代码检查装置,所述代码检查装置包括:待修改代码文件获取单元,用于获取待修改代码文件列表;第一代码检查单元,用于根据预设的代码分析规则,对所述待修改代码文件列表进行错误类检查、警告类检查及提示类检查,生成检查结果并输出。在一实施例中,所述代码检查装置还包括:已修改代码文件获取单元,用于获取已修改代码文件列表;变更文件生成单元,用于根据所述待修改代码文件列表及已修改代码文件列表,生成变更文件列表;第二代码检查单元,用于根据预设的代码分析规则,对所述变更文件列表进行错误类检查、警告类检查及提示类检查,生成检查结果并输出。在一实施例中,所述第一代码检查单元包括:类标识符判断模块,用于判断所述待修改代码文件列表中单个应用范围内的xml文件中是否存在重复的类标识符;类标识符错误提示模块,用于当所述XML文件中存在重复的类标识符时,生成错误提示并输出,所述错误提示包括:重复的类标识符、重复类标识符的数量、重复类标识符所在位置及所在文件名称。在一实施例中,所述第一代码检查单元还包括:引入参数判断模块,用于判断所述待修改代码文件列表中xml文件内的类定义中是否存在相同的引入参数;引入参数错误提示模块,用于当所述类定义中存在相同的引入参数时,生成错误提示,所述错误提示包括含有相同的引入参数的类定义所在的文件名称、文件位置及文件数量。在一实施例中,所述第一代码检查单元还包括:数据域名重复判断模块,用于判断所述待修改代码文件列表中xml接口定义文件中的头文件与体文件之间是否存在数据域名重复;数据域名重复告警模块,用于当所述头文件与体文件之间存在数据域名重复时,生成警告提示,所述警告提示包括:重复的数据域名、重复数据域名所在文件的文件名称、文件位置及文件数量。在一实施例中,所述第一代码检查单元还包括:废弃代码判断模块,用于判断所述待修改代码文件列表中的xml文件中是否含有已废弃代码;废弃代码告警模块,用于当所述xml文件中含有已废弃代码时,生成警告提示,所述警告提示包括含有已废弃代码的xml文件的文件名称及文件数量。在一实施例中,所述第一代码检查单元还包括:版本号判断模块,用于判断所述待修改代码文件列表中引用关系定义文件中所含的版本号是否与预设版本号相同,所述引用关系定义文件为xml文件;版本号提醒模块,用于当所述引用关系定义文件中所含版本号与所述预设版本号不同时,生成提醒通知,所述提醒通知包括与所述预设版本号不同的版本号的数量及其所在位置。在一实施例中,所述第二代码检查单元包括:接口代码规范检查模块,用于判断所述变更文件列表中java文件的文件名结尾是否符合预设网银命名规范;接口代码错误提示模块,用于当所述java文件的文件名结尾不符合预设网银命名规范时,生成错误提示并输出,所述错误提示包括文件名结尾不符合预设网银命名规范的java文件的文件名称、文件位置及文件数量。在一实施例中,所述第二代码检查单元还包括:循环体查询模块,用于查询所述变更文件列表中的解析输出接口文件中是否定义有循环体;属性判断模块,用于当所述解析输出接口文件中定义有循环体时,判断所述循环体中的忽略异常属性是否为真;属性错误提示模块,用于当所述循环体中的忽略异常属性为真时,生成错误提示,所述错误提示包括忽略异常属性为真的循环体所在位置及其所在文件名称、文件数量。在一实施例中,所述第二代码检查单元还包括:终端标识对象判断模块,用于判断所述变更文件列表中的产品文件内的接口方法的最后一个参数是否为终端标识对象,所述产品文件为java文件;终端标识对象错误提示模块,用于当所述产品文件内的接口方法的最后一个参数不为终端标识对象时,生成错误提示,所述错误提示包括最后一个参数不为终端标识对象的接口方法所在产品文件的文件名称、文件数量及文件所在位置。在一实施例中,所述第二代码检查单元还包括:命名规范判断模块,用于判断所述变更文件列表中的java文件、xml文件、sql文件及shell文件的文件名是否符合预设命名规范;命名错误告警模块,用于当所述java文件、xml文件、sql文件及shell文件的文件名有至少一个不符合所述预设命名规范时,生成警告提示,所述警告提示包括文件名不符合预设命名规范的文件名称、文件位置及文件数量。在一实施例中,所述第二代码检查单元还包括:代码注释判断模块,用于判断所述变更文件列表中的各java文件中的代码注释行数占当前java文件中所含代码总行数的比例是否小于预设值;代码注释告警模块,用于当小于所述预设值时,生成警告提示,所述警告提示包括代码注释行数所占比例小于所述预设值的java文件的文件名称、文件位置及文件数量。在一实施例中,所述第二代码检查单元还包括:大表判断模块,用于根据预设的大表集合,判断所述变更文件列表中的数据库语句定义文件中的sql语句是否涉及大表,所述数据库语句定义文件为xml文件;大表提醒模块,用于当所述数据库语句定义文件中的sql语句涉及大表时,生成提醒通知,所述提醒通知包括涉及大表的sql语句的所在位置、所在文件名称、文件位置及文件数量。在一实施例中,所述第二代码检查单元还包括:关键字判断模块,用于判断所述变更文件列表中网银产品项目文件中的代码是否包含预设关键字,所述预设关键字包括机构号、客户号、流水号、编号、序号、渠道、证件类型、证件编码及虚拟柜员中的至少一种;关键字提醒模块,用于当所述网银产品项目文件中的代码包含所述预设关键字时,生成提醒通知,所述提醒通知包括所含预设关键字的数量、含有预设关键字的文件名称及文件位置。在一实施例中,所述第二代码检查单元还包括:语法判断模块,用于判断所述变更文件列表中各java文件中的代码是否包含==或equals;语法提醒模块,用于当所述java文件中的代码包含==或equals时,生成提醒通知,所述提醒通知包括==或equals在所述java文件中的位置及数量。在一实施例中,所述第二代码检查单元还包括:接口文件变更判断模块,用于判断所述变更文件列表中是否存在以网银产品项目开头的输入接口定义文件;接口文件变更提醒模块,用于当所述变更文件列表中存在以网银产品项目开头的输入接口定义文件时,生成提醒通知,所述提醒通知包括所述输入接口定义文件的文件名称、文件位置及文件数量。在一实施例中,所述第二代码检查单元还包括:批次文件变更判断模块,用于判断所述变更文件列表中是否包含java文件、和/或xml文件、和/或sql文件、和/或shell文件;批次文件变更提示模块,用于当所述变更文件列表中包含变更的java文件、和/或xml文件、和/或sql文件、和/或shell文件时,生成提醒通知,所述提醒通知包括相应的文件名称及文件数量。本发明的有益效果在于:本发明将问题代码固化到代码检查点中,在利用本发明对待检编码(即待修改代码文件列表)进行检查时,发现与问题代码相同的代码时则进行显示,以提前发现风险;利用本发明实施例可以扫描待修改代码文件列表中的所有代码,将其中不符合开发规范的代码检查出来,可以纠正网银开发人员开发过程中不好的编码习惯,使其向标准的编码规范靠拢,进而提升代码质量,提高了代码检查的效率,其并缩短代码检查时间。另外,本发明实施例提供的代码检查装置采用Eclipse插件开发的方式,投入少、见效快、可定制、源码开放,可以满足目前及以后网银代码复查的要求。附图说明为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例代码检查方法的流程示意图;图2也为本发明实施例代码检查方法的流程示意图;图3为本发明实施例代码检查装置的结构示意图;图4为本发明实施例第一代码检查单元2的结构示意图;图5为本发明实施例第二代码检查单元5的结构示意图;图6为本发明实施例利用BCCT代码规范检查工具箱检查代码的流程;图7为本发明实施例BCCT规范检查工具箱插件的子菜单;图8A~图8H为本发明实施例进行单独应用BeanID重复检查的实操示意图;图9A~图9H为本发明实施例进行批次文件变更检查的实操示意图。具体实施方式下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。图1为本发明实施例代码检查方法整体流程示意图。如图1所示,该代码检查方法主要包括:步骤S1、获取待修改代码文件列表。上述的待修改代码文件列表指的是待检查代码,通常开发人员在编写完当前开发流后需要对当前开发流中的所有代码进行代码规范检查,则当前开发流中的所有代码即为待检查代码,也即待修改代码文件列表。步骤S2、根据预设的代码分析规则,对待修改代码文件列表进行错误类检查、警告类检查及提示类检查,生成检查结果并输出。本发明实施例共梳理出三大类检查:错误类检查、警告类检查及提醒类检查。其中,错误类(即Error类)检查表示代码存在错误,开发人员必须修改;警告类(即Warning类)检查表示代码不符合编写规范,存在潜在危险,开发人员要逐步消除此类危险;提示类(即Info类)表示代码产生了变更,提醒开发人员注意此类变更了的代码。本发明将问题代码固化到代码检查点中,在利用本发明对待检编码(即待修改代码文件列表)进行检查时,发现与问题代码相同的代码时则进行显示,以提前发现风险;利用本发明实施例可以扫描待修改代码文件列表中的所有代码,将其中不符合开发规范的代码检查出来,可以纠正网银开发人员开发过程中不好的编码习惯,使其向标准的编码规范靠拢,进而提升代码质量,提高了代码检查的效率,其并缩短代码检查时间。另外,本发明实施例提供的代码检查装置采用Eclipse插件开发的方式,投入少、见效快、可定制、源码开放,可以满足目前及以后网银代码复查的要求。为了进一步节省代码检查所用的时间,提高代码检查效率,本发明实施例还可使用如图2所示的代码检查方法,即在获取待修改代码文件列表(步骤S1)后,该实施例还包括以下步骤:步骤S3、获取已修改代码文件列表。上述已修改代码文件列表是相对待修改代码列表而言的,是开发人员已经检查完毕的代码,通常为相对当前开发流的上一开发流中的所有代码,属于可以执行或者已经执行的代码,即可将已修改代码文件列表中的代码视为符合规范的代码。步骤S4、根据步骤S1获取的待修改代码文件列表及步骤S3中获取的已修改代码文件列表,生成变更文件列表。每个开发批次所含代码量巨大,如果对待修改代码文件列表中的所有代码都检查一遍,会花费较长的时间,因此在进行某些检查时,并不需要对待修改代码文件列表中所有的代码检查一遍,而仅对待修改代码文件列表中相对于已修改代码文件列表中所变更的代码文件进行检查即可,这部分变更的代码文件即变更文件列表。步骤S5、根据预设的代码分析规则,对变更文件列表进行错误类检查、警告类检查及提示类检查,生成检查结果并输出。利用本发明实施例可以快速检查出变更文件列表中不符合规范的代码,并进行提示。在一实施例中,在步骤S2中,根据预设的代码分析规则对待修改代码进行错误类检查包括对待修改代码文件列表中的单个应用范围内的xml文件(即格式为*.xml的文件)进行检查,判断该xml文件中是否存在重复的类标识符(即BeanID),当单个应用范围内的xml文件中存在重复的类标识符时,生成一错误提示,以提示开发人员出现重复的类标识符,并显示给开发人员重复的类标识符的数量、类标识符所在的位置及所在的文件名称等参数。通常地,利用单个应用下的所有子项目中的xml文件中是否存在BeanID重复,检查类标识符的规则类似于id="otherbank",没有声明id=""的则无法检查。以中国银行为例,在进行网银开发时,利用本发明实施例步骤S2所检查的应用通常包括:"BII"、"AutoHandler"、"AutoHandler-b2e"、"DataReceiverServer"、"RegisterServer"、"Management"、"BOA"、"bocnet-alarmengine"、"Assassian"、"BBS"、"BMPS"、"AsyncEventHandle"、"TicketServer"、"TicketCenter"、"Branch-Bii"、"BocnetExpress"、"DiscoveryFramework",、"ErrorProcessor"。检查的结果文件可命名为bean-id-duplicate-check-result.txt,为方便开发人员查看检查结果,上述结果文件一般存放在待修改代码文件列表的目录下。在一实施例中,步骤S2中根据预设的代码分析规则,对待修改代码文件列表进行错误类检查还包括对Bean定义(即类定义)进行检查,判断其中的注入参数是否重复,通常检查待修改代码文件列表中的所有xml格式的文件,把xml文件里类定义中的参数param/ref重复注入的代码检查出来,包括类定义中的<map>注入参数。具体实施时,判断待修改代码文件列表中xml文件内的类定义中是否存在相同的引入参数,例如是否存在相同的引入参数param或者相同的引入参数ref,当上述类定义中存在相同的引入参数param或者相同的引入参数ref时,生成错误提示,该错误提示包括含有相同引入参数的类定义所在的文件名称、文件位置及文件数量。例如,上述检查的结果文件可命名为bean-params-duplicate-check-result.txt,存放在待修改代码文件列表的目录下。在一实施例中,步骤S2在根据预设的代码分析规则,对待修改代码文件列表进行警告类检查还包括对xml接口文件中的fieldname(即数据域名)进行检查,判断数据域名是否重复。会检查待修改代码文件列表中所有xml接口定义文件,包括Format输入接口定义文件和Parse输出接口文件,判断xml接口定义文件中的头文件与体文件之间是否存在数据域名重复,以将xml接口定义文件中的报文体文件与报文头文件中重复的数据域名检查出来,提示开发人员,避免产生编码错误。并且,当该头文件与体文件之间存在数据域名重复时生成警告提示,该警告提示包括重复的数据域名、重复数据域名所在文件的文件名称、文件位置及文件数量。上述检查的结果文件可命名为xml-check-result.txt,存放在待修改代码文件列表的目录下。在一实施例中,步骤S2在根据预设的代码分析规则,对待修改代码文件列表进行警告类检查还包括废弃代码检查,即判断待修改代码文件列表中的xml文件中是否含有已废弃代码,当上述xml文件中含有已废弃代码时,生成警告提示,该警告提示包括含有已废弃代码的xml文件的文件名称及文件数量。例如,类定义(Bean定义)前带有“<!—”的代码属于废弃代码,利用本发明实施例可以将xml文件中Bean定义内已经废弃的代码检查出来。检查的结果文件可命名为bean-define-delete-check-result的txt文件,存放在待修改代码文件列表的目录下。在一实施例中,步骤S2中根据预设的代码分析规则,对待修改代码文件列表进行提醒类检查还包括POM文件(即引用关系定义文件)的版本号检查,检查所有pom.xml文中的版本号是否为当前正确的版本号,基础团队会在每个开发批次开始时修正版本号,对于某些特殊的项目及应用,开发人员可以本地截取pom.xml文件修改。具体实施时,判断待修改代码文件列表中的xml文件中的引用关系定义文件(及pom.xml文件)中所含的版本号是否与预设版本号相同,当上述的pom.xml文件所含的版本号与预设版本号不同时,生成提醒通知,所述提醒通知包括与所述预设版本号不同的版本号的数量及其所在位置。上述检查的结果文件可命名为pom-version-check-result的txt文件,存放在待修改代码文件列表的目录下,共开发人员查看。在一实施例中,步骤S5中根据预设的代码分析规则,对变更文件列表进行错误类检查包括对变更文件列表中的java文件(即格式为*.java的文件)进行检查,判断该java文件的文件名结尾是否符合预设的网银命名规范,当待检的java文件的文件名结尾不符合预设网银命名规范时,生成错误提示并输出,该错误提示包括文件名结尾不符合预设网银命名规范的java文件的文件名称、文件位置及文件数量,以提醒开发人员注意命名错误的java文件。在网银开发过程中,文件的命名通常应符合一定的命名规范,本发明实施例中预设的网银命名规范是java文件的文件名要以Action、或者Service、或者Dao、或者Entity、或者Impl、或者Product、或者Function结尾,如果待检的java文件的文件名结尾不是Action、Service、Dao、Entity、Impl、Product、Function中的任一种,那么该待检java文件的命名错误,需要向开发人员发出错误提示,告知开发人员命名错误的java文件的文件名称为何、文件所处位置及命名错误的java文件的数量。上述检查的结果文件可命名为interface-management-check-result的txt文件,存放在待修改代码文件列表的目录下。在一实施例中,步骤S5中根据预设的代码分析规则,对变更文件列表进行错误类检查还包括对变更文件列表中的解析输出接口文件(即Parse输出接口文件)进行检查,查询该解析输出接口文件中是否定义有循环体,如果定义有循环体,判断该循环体中的忽略异常属性是否为真;当上述循环体中的忽略异常属性为真时,生成错误提示,该错误提示包括忽略异常属性为真的循环体所在位置及其所在文件名称、文件数量,以提示开发人员。解析输出接口文件属于产品层xml文件中的一部分,根据产品层的文件规范,如果解析输出接口文件中定义有循环体idxField,那么该循环体中的忽略异常属性必须置为假(即ignoreException必须=false),否则应向开发人员发出错误提示,告知其该解析输出接口文件不符合产品层的文件规范。上述检查的结果文件可命名为code-product-xml-check-result的txt文件,存放在待修改代码文件列表的目录下。通常地,步骤S5中根据预设的代码分析规则,对变更文件列表进行错误类检查还包括对产品层接口规范进行检查。即根据产品层接口定义规范,所有的product.java类的文件中接口方法的最后一个参数必须为TerminalRemarkInfo。在进行产品层接口规范检查时,通常判断变更文件列表中的产品文件内的接口方法的最后一个参数是否为终端标识对象,上述的产品文件为java文件(即文件名末尾为product的java格式的文件),当产品文件内的接口方法的最后一个参数不为终端标识对象时,生成一错误提示,改错误提示包括最后一个参数不为终端标识对象的接口方法所在产品文件的文件名称、文件数量及文件所在位置。上述检查的结果文件可命名为code-product-method-check-result的txt文件,存放在待修改代码文件列表的目录下。在一实施例中,步骤S5中根据预设的代码分析规则,对变更文件列表进行警告类检查包括对不同文件的文件名进行检查,判断各文件名是否符合预设命名规范。在网银开发过程中,不同格式的文件其命名规范通常也不同,通常先针对不同格式的文件设定一标准的命名规范,然后根据该标准的命名规范判断文件的文件名是否规范。在本实施例中,需要判断变更文件列表中的java文件、xml文件、sql文件及shell文件的文件名是否符合预设命名规范。当上述的java文件、xml文件、sql文件及shell文件的文件名有一个文件的文件名不符合所述预设命名规范时,即生成警告提示,提示开发人员文件名不符合预设命名规范的文件名称、文件位置及文件数量。在本发明实施例中,java文件、xml文件、sql文件及shell文件的文件名必须以Bas、或者Psn、或者Ent、或者B2e、或者Sme、或者Ove、或者Ovp、或者Vip、或者Glo开头。上述检查的结果文件可命名为code-filename-check-result的txt文件,存放在待修改代码文件列表的目录下。在一实施例中,步骤S5中根据预设的代码分析规则,对变更文件列表进行警告类检查包括代码注释检查,即判断变更文件列表中的各java文件中的代码注释行数占当前java文件中所含代码总行数的比例是否小于预设值,当小于该预设值时,生成警告提示,其中该警告提示包括代码注释行数所占比例小于预设值的java文件的文件名称、文件位置及文件数量。通常地,上述预设值取25%,即一java文件中的代码注释行数与总代码行数的比例要炒股25%,否则生成警告提示,提示开发人员该java文件的代码注释不满足条件,需添加注释,使代码注释行数所占比例大于25%。上述检查的结果文件可命名为code-comment-check-result的txt文件,存放在待修改代码文件列表的目录下。在一实施例中,步骤S5根据预设的代码分析规则,对变更文件列表进行提醒类检查包括大表检查,即先本地存储一大表集合,判断变更文件列表中的xml文件中的数据库语句定义文件(即sql.xml文件)中的sql语句是否涉及大表集合中所含的大表,当上述的数据库语句定义文件中的sql语句涉及大表时,生成一提醒通知,以提醒开发人员涉及大表的sql语句的所在位置、所在文件名称、文件位置及文件数量。具体实施时,上述大表集合可以从DBA小组提供的大表清单中得到,在检测变更文件列表中所有的sql.xml文件是否涉及大表时,可以精确到代码行级别。上述检查的结果文件可命名为code-bigtable-check-result的txt文件,存放在待修改代码文件列表的目录下。在一实施例中,步骤S5中根据预设的代码分析规则,对变更文件列表进行提醒类检查还包括检查网银产品项目文件,判断变更文件列表中网银产品项目文件中的代码是否包含预设关键字,这些预设的关键字扒开机构号、客户号、流水号、编号、序号、渠道、证件类型、证件编码及虚拟柜员中的一种或多种的组合。当网银产品项目文件中的代码包含一个或多个上述的关键字时,生成提醒通知以提醒开发人员注意这些关键字,该提醒通知包括所含预设关键字的数量、含有预设关键字的文件名称及文件位置。上述检查的结果文件可命名为code-keyword-check-result的txt文件,存放在待修改代码文件列表的目录下。在一实施例中,步骤S5中根据预设的代码分析规则,对变更文件列表进行提醒类检查还包括对java文件中的代码进行语法检查,判断变更文件列表中的各java文件所含的代码是否包含==或equals,当上述java文件中的代码包含==或equals时,生成提醒通知,该提醒通知包括==或equals在所述java文件中的位置及数量。在网银开发过程中,新员工或外援开发人员写的代码很可能会出现语法问题,对变更文件列表中的所有java文件精确到代码行级别进行语法检查,能提醒开发人员注意其所写的代码中包含==或equals,需要及时关注。上述检查的结果文件可命名为code-equals-check-result的txt文件,存放在待修改代码文件列表的目录下。在一实施例中,步骤S5中根据预设的代码分析规则,对变更文件列表进行提醒类检查还包括MCIS(多渠道接入系统)接口变更检查,判断变更文件列表中是否存在以网银产品项目开头的输入接口定义文件(即Format输入接口文件),当变更文件列表中存在以网银产品项目开头的输入接口定义文件时,生成一提醒通知,该提醒通知包括上述输入接口定义文件的文件名称、文件位置及文件数量。以中国银行网上银行(bocnet)为例,判断变更文件列表中是否包含以bocnet-product开头的Format输入接口文件,当变更文件列表中包含以bocnet-product开头的Format输入接口文件时,生成提醒通知,所述提醒通知包括以bocnet-product开头的Format文件的文件名称、文件位置及文件数量。上述检查的结果文件可命名为code-mcis-check-result的txt文件,存放在待修改代码文件列表的目录下。在一实施例中,步骤S5中根据预设的代码分析规则,对变更文件列表进行提醒类检查还包括批次变更文件进行检查,判断变更文件列表中是否包含java文件、xml文件、sql文件及shell文件中的一种或多种的组合,如果存在则生成提醒通知,该提醒通知包括变更的文件名称及文件数量。例如,将变更的java文件、xml文件、sql文件、shell文件列出来,为开发人员提供研发帮助,提醒开发人员一些重要的文件是否发生了改变。上述检查的结果文件可命名为modify-files-check-result的txt文件,存放在待修改代码文件列表的目录下。在一实施例中,步骤S5中对变更文件列表进行检查时还包括仅检查有无变更的shell文件(即shell格式的文件),尤其是检查AutoHandler项目和DataReceiver项目中的shell文件有无变更,当存在变更的shell文件时,将变更的shell文件列出来,提醒开发人员注意。上述检查的结果文件可命名为code-shell-check-result的txt文件,存放在待修改代码文件列表的目录下。本发明将问题代码固化到代码检查点中,在利用本发明对待检编码进行检查时,发现与问题代码相同的代码时则进行显示,以提前发现风险。利用本发明实施例可以扫描待修改代码文件列表中的所有代码,将其中不符合开发规范的代码检查出来,可以纠正网银开发人员开发过程中不好的编码习惯,使其向标准的编码规范靠拢,进而提升代码质量,提高了代码检查的效率,其并缩短代码检查时间。另外,本发明实施例提供的代码检查装置采用Eclipse插件开发的方式,投入少、见效快、可定制、源码开放,可以满足目前及以后网银代码复查的要求。基于与图1所示的代码检查方法相同的发明构思,本申请实施例还提供了一种代码检查装置,如下面实施例所述。由于该装置解决问题的原理与图1中代码检查方法的原理相似,因此该代码检查装置的实施可以参见图1所示的代码检查方法的实施,重复之处不再赘述。在另一实施例中,本发明还提供了一种代码检查装置,其结构示意图如图3所示,该代码检查装置包括:待修改代码文件获取单元1及第一代码检查单元2。其中,待修改代码文件获取单元1用于获取待修改代码文件列表;第一代码检查单元2用于根据预设的代码分析规则,对待修改代码文件获取单元1获取的待修改代码文件列表进行错误类检查、警告类检查及提示类检查,生成检查结果并输出。在一实施例中,本发明实施例提供的代码检查装置还包括:已修改代码文件获取单元3、变更文件生成单元4及第二代码检查单元5。其中,已修改代码文件获取单元3用于获取已修改代码文件列表;变更文件生成单元4用于根据上述以获得的待修改代码文件列表及已修改代码文件列表,生成变更文件列表;第二代码检查单元5用于根据预设的代码分析规则,对变更文件生成单元4生成的变更文件列表进行错误类检查、警告类检查及提示类检查,生成检查结果并输出。在一实施例中,第一代码检查单元2的结构如图4所示,该单元主要包括:类标识符判断模块201及类标识符错误提示模块201。其中,类标识符判断模块201用于判断待修改代码文件列表中单个应用范围内的xml文件中是否存在重复的类标识符,类标识符错误提示模块202用于当上述XML文件中存在重复的类标识符时,生成错误提示并输出,该错误提示包括:重复的类标识符、重复类标识符的数量、重复类标识符所在位置及所在文件名称。在一实施例中,第一代码检查单元2还包括:引入参数判断模块203及引入参数错误提示模块204。其中,引入参数判断模块用于判断上述待修改代码文件列表中xml文件内的类定义中是否存在相同的引入参数。引入参数错误提示模块204用于当上述类定义中存在相同的引入参数时,生成错误提示,该错误提示包括含有相同的引入参数的类定义所在的文件名称、文件位置及文件数量。在一实施例中,第一代码检查单元2还包括:数据域名重复判断模块205及数据域名重复告警模块206。其中数据域名重复判断模块206用于判断上述待修改代码文件列表中xml接口定义文件中的头文件与体文件之间是否存在数据域名重复。数据域名重复告警模块206用于当上述头文件与体文件之间存在数据域名重复时,生成警告提示,该警告提示包括:重复的数据域名、重复数据域名所在文件的文件名称、文件位置及文件数量。在一实施例中,第一代码检查单元2还包括:废弃代码判断模块207及废弃代码告警模块208。其中,废弃代码判断模块207用于判断上述待修改代码文件列表中的xml文件中是否含有已废弃代码。废弃代码告警模块208用于当上述xml文件中含有已废弃代码时,生成警告提示,该警告提示包括含有已废弃代码的xml文件的文件名称及文件数量。在一实施例中,第一代码检查单元2还包括:版本号判断模块209及版本号提醒模块210。其中,版本号判断模块209用于判断上述待修改代码文件列表中引用关系定义文件中所含的版本号是否与预设版本号相同,该引用关系定义文件为xml格式的文件。版本号提醒模块210用于当上述引用关系定义文件中所含版本号与预设版本号不同时,生成提醒通知,该提醒通知包括与所述预设版本号不同的版本号的数量及其所在位置。在一实施例中,第二代码检查单元5的结构如图5所示,该单元主要包括:接口代码规范检查模块501及接口代码错误提示模块502。其中,接口代码规范检查模块501用于判断上述变更文件列表中java文件的文件名结尾是否符合预设网银命名规范,接口代码错误提示模块502用于当上述java文件的文件名结尾不符合预设网银命名规范时,生成错误提示并输出,该错误提示包括文件名结尾不符合预设网银命名规范的java文件的文件名称、文件位置及文件数量。在一实施例中,第二代码检查单元5还包括:循环体查询模块503、属性判断模块504及属性错误提示模块505。其中,循环体查询模块503用于查询上述变更文件列表中的解析输出接口文件中是否定义有循环体。属性判断模块504用于当上述解析输出接口文件中定义有循环体时,判断该循环体中的忽略异常属性是否为真。属性错误提示模块505用于当上述循环体中的忽略异常属性为真时,生成错误提示,该错误提示包括忽略异常属性为真的循环体所在位置及其所在文件名称、文件数量。在一实施例中,第二代码检查单元5还包括:终端标识对象判断模块506及终端标识对象错误提示模块507。其中,终端标识对象判断模块506用于判断上述变更文件列表中的产品文件内的接口方法的最后一个参数是否为终端标识对象,且该产品文件为java文件。终端标识对象错误提示模块507用于当上述产品文件内的接口方法的最后一个参数不为终端标识对象时,生成错误提示,该错误提示包括最后一个参数不为终端标识对象的接口方法所在产品文件的文件名称、文件数量及文件所在位置。在一实施例中,第二代码检查单元5还包括:命名规范判断模块508及命名错误告警模块509。其中,命名规范判断模块508用于判断上述变更文件列表中的java文件、xml文件、sql文件及shell文件的文件名是否符合预设命名规范。命名错误告警模块509用于当上述java文件、xml文件、sql文件及shell文件的文件名有至少一个不符合预设命名规范时,生成警告提示,该警告提示包括文件名不符合预设命名规范的文件名称、文件位置及文件数量。在一实施例中,第二代码检查单元5还包括:代码注释判断模块510及代码注释告警模块511。其中,代码注释判断模块510用于判断上述变更文件列表中的各java文件中的代码注释行数占当前java文件中所含代码总行数的比例是否小于预设值。代码注释告警模块511用于当小于上述预设值时,生成警告提示,该警告提示包括代码注释行数所占比例小于预设值的java文件的文件名称、文件位置及文件数量。在一实施例中,第二代码检查单元5还包括:大表判断模块512及大表提醒模块513。其中,大表判断模块512用于根据预设的大表集合,判断上述变更文件列表中的数据库语句定义文件中的sql语句是否涉及大表,该数据库语句定义文件为xml文件。大表提醒模块513用于当上述数据库语句定义文件中的sql语句涉及大表时,生成提醒通知,该提醒通知包括涉及大表的sql语句的所在位置、所在文件名称、文件位置及文件数量。在一实施例中,第二代码检查单元5还包括:关键字判断模块514及关键字提醒模块515。其中,关键字判断模块514用于判断上述变更文件列表中网银产品项目文件中的代码是否包含预设关键字,预设关键字包括机构号、客户号、流水号、编号、序号、渠道、证件类型、证件编码及虚拟柜员中的至少一种。关键字提醒模块515用于当上述网银产品项目文件中的代码包含上述预设关键字时,生成提醒通知,该提醒通知包括所含预设关键字的数量、含有预设关键字的文件名称及文件位置。在一实施例中,第二代码检查单元5还包括:语法判断模块516及语法提醒模块517。其中语法判断模块516用于判断上述变更文件列表中各java文件中的代码是否包含==或equals。语法提醒模块517用于当上述java文件中的代码包含==或equals时,生成提醒通知,该提醒通知包括==或equals在所述java文件中的位置及数量。在一实施例中,第二代码检查单元5还包括:接口文件变更判断模块518及接口文件变更提醒模块519。其中,接口文件变更判断模块518用于判断变更文件列表中是否存在以网银产品项目开头的输入接口定义文件。接口文件变更提醒模块519用于当上述变更文件列表中存在以网银产品项目开头的输入接口定义文件时,生成提醒通知,该提醒通知包括所述输入接口定义文件的文件名称、文件位置及文件数量。在一实施例中,第二代码检查单元5还包括:批次文件变更判断模块520及批次文件变更提示模块521。其中,批次文件变更判断模块520用于判断上述变更文件列表中是否包含java文件、和/或xml文件、和/或sql文件、和/或shell文件。批次文件变更提示模块521用于当上述变更文件列表中包含变更的java文件、和/或xml文件、和/或sql文件、和/或shell文件时,生成提醒通知,该提醒通知包括相应的文件名称及文件数量。本发明将问题代码固化到代码检查点中,在利用本发明对待检编码(即待修改代码文件列表)进行检查时,发现与问题代码相同的代码时则进行显示,以提前发现风险;利用本发明实施例可以扫描待修改代码文件列表中的所有代码,将其中不符合开发规范的代码检查出来,可以纠正网银开发人员开发过程中不好的编码习惯,使其向标准的编码规范靠拢,进而提升代码质量,提高了代码检查的效率,其并缩短代码检查时间。另外,本发明实施例提供的代码检查装置采用Eclipse插件开发的方式,投入少、见效快、可定制、源码开放,可以满足目前及以后网银代码复查的要求。利用本发明实施例提供的代码检查方法及装置,参考clearcase\maven\checkstyle等标准化插件,根据网银产品的代码特点和规范要求,本发明实施例提供的代码检查装置可以设计成一Eclipse标准化插件的形式,使用Eclipse标准化插件的接口,开发出一Eclipse标准化插件,对插件的使用流程进行设计(例如,是否需要输入信息,进度条控制,是否根据错误级别终端当前检查并提示开发人员,最后生成检查结果报告,并把问题显示在结果视图中),当开发人员在EclipseIDE环境中进行开发时,可随时通过鼠标点击相应地开发流,完成代码检查工作。例如,在网银开发(例如中国银行网上银行)过程中时,可以将上述Eclipse插件命名为BCCT代码规范检查工具箱(BocnetCodingCheckToolBox),Bocnet表示中国银行网上银行,该Eclipse插件遵循标准的Eclipse插件规范标准。开发好的BCCT插件会以JAR包发布给开发人员使用,开发人员使用Eclipse插件(JAR包最新版本)进行代码复查时,可以按照图6所示流程图先安装该插件然后用其检查代码。步骤1)与步骤2)并非必要步骤,如果该插件已安装完毕,则直接进行步骤3)即可。打开Elipse工作空间(步骤3))。选择Eclipse开发空间中的项目、或文件夹、或文件(步骤4)),如果没有选择Eclipse开发空间中的相应项目或文件,则生成一提示信息,提示开发人员必须选择选择一个项目、或文件夹、或文件,此处所说的“项目、或文件夹、或文件”可为待修改代码文件列表。选择一检查点来进行检查(步骤5)),并选择上一个工作空间等信息,即相当于已修改代码文件列表(步骤6)).在进行某些检查时,步骤6)可以省略,例如,检查单个应用范围内的xml文件中是否存在重复的类标识符时,可以直接进入步骤7),而不必进行步骤6)。等待检查任务执行,显示进度条(步骤7)),提示开发人员该插件正在检查代码,每一个项目作为一个进度单位。在步骤7)中,开发人员可通过查看进度条,确认是否所有的项目都经过了检查,等待插件检查完成,查看进度提示框的提示信息,并且,对每一个项目进行检查的同时把检查的过程信息输出到控制台上。判断检查过程是否出错(步骤8)),当出错时,提示开发人员查看错误信息;如果不出错,则输出结果文件(步骤10))。检查完毕后,检查结果通常输出到一个txt格式的文件中,提示开发人员该规范检查已完成。在提示用户该规范检查已完成的同时,输出结果视图(步骤11)),开发人员可在Elipse编辑器视图中查看检查结果(步骤12)。当代码出错时,开发人员可修改代码(步骤13))并对修改后的代码重新进行检查。例如,在进行代码复查时使用鼠标选中任意一个项目、目录或者文件,然后点击鼠标右键,可以看到“BCCT规范检查工具箱”的图标,然后会显示出16个选项,包括5个Error类检查、4个Warning类检查和7个Info类检查,如图7所示。若要检查名为wtq0952_bocnet_P603的文件夹中单个应用范围内的xml文件中是否存在重复的类标识符,只需在选中名为wtq0952_bocnet_P603的文件夹,然后点击鼠标右键,点击图7中的“单独应用BeanID重复检查”即可,会出现图8A所示的提示,点击“OK”即可进行检查。检查过程中,开发人员可看到正在检查的项目,如图8B所示,当前正检查到BII项目。并且,在检查过程中还显示进度条(见图8C),开发人员通过查看进度条,确认是否所有的项目都经过了检查。开发人员还可以从控制台上查看检查过程(见图8D)。检查完毕后,生成检查结果并提示开发人员(见图8E),提示开发人员双击【BcctResultView】视图中的【文件名称】字段发开文件(见图8F)。在BcctResultView结果视图中查看结果文件,此表格视图会告诉开发人员当前开发流与上一开发流比较,有哪些文件修改或增加,可以直接双击【文件名称】字段打开该文件,如图8G所示。也可以选择一个文件,使用鼠标双击在editor编辑视图区查看该文件(见图8H)。在利用上述BCCT规范检查工具箱插件进行批次文件变更检查时,使用鼠标任意选择一个项目、目录或者文件,例如选择当前的开发流P503,点击鼠标右键,在弹出的子菜单中选择【Info提醒-批次文件变更检查】(见图7)。选择批次文件变更检查选项后会弹出一个选择框(见图9A),提示开发人员选择上一个开发批次开发流目录,由于目前已选择的开发流为P503,所以选择P502开发流目录,路径为D:\cclocal\wtq0952_bocnet_P502_new。在点击图9A中“确定”按钮后,开始检查所有的项目,此时检查的是当前开发流与上一开发流的变更文件列表,有进度条显示正在检查的项目(见图9B),同时控制台显示检查过程的输出(见图9C),开发人员可以在控制台查看检查过程。检查完毕后,显示检查的结果信息,在本实施例中,文件变更列表中有1802个文件新增或修改(见图9D),结果文件为D:\cclocal\wtq0952_bocnet_P503\modify-file-check-result.txt。开发人员双击【BCCTResultView】视图中的【文件名称】打开上述txt格式的结果文件,在BCCTResultView结果视图中查看检查结果,如图9E所示,此表格视图会告诉开发人员当前开发流与上一开发流比较,有哪些文件修改或增加,可以直接双击【文件名称】字段打开该文件,也可以选择一个文件,点击右键菜单中的【与生产版本比较】,显示两个开发流文件的比较结果,如图9F所示。另外,开发人员还可以在editor编辑视图区查看结果文件,如图9G所示。检查结果文件modify-file-check-result.txt存放在当前开发流的目录下,例如当前开发流为P503(见图9H),方便开发人员查看。目前,BCCT代码规范检查工具箱插件可以对*.java文件,*.xml文件,*.sql文件,*.shell文件进行检查,对于其他格式的文件,只要该文件能够按行读取,均可以利用BCCT代码规范检查工具箱插件对其进行代码检查,只是需要针对每类文件编写相应的代码,读取文件中每一行代码的内容,然后判断该行代码是否符合要求。上述实施例仅用于解释说明本发明,并非用于对本发明的限制。利用本发明实施例,当开发人员在EclipseIDE中进行开发时,可以随时通过鼠标点击,完成代码检查工作。本发明将问题代码固化到代码检查点中,在利用本发明对待检编码(即待修改代码文件列表)进行检查时,发现与问题代码相同的代码时则进行显示,以提前发现风险;利用本发明实施例可以扫描待修改代码文件列表中的所有代码,将其中不符合开发规范的代码检查出来,可以纠正网银开发人员开发过程中不好的编码习惯,使其向标准的编码规范靠拢,进而提升代码质量,提高了代码检查的效率,其并缩短代码检查时间。另外,本发明实施例提供的代码检查装置采用Eclipse插件开发的方式,投入少、见效快、可定制、源码开放,可以满足目前及以后网银代码复查的要求。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。当前第1页1 2 3 当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1