一种代码风险的检测方法及装置制造方法及图纸

技术编号:19376296 阅读:22 留言:0更新日期:2018-11-09 20:25
本发明专利技术提供了一种代码风险的检测方法及装置,该方法包括:扫描单元从预设的代码文件中提取函数和类;代码分析单元依据预设的函数风险阈值和类风险阈值分别对所述函数和所述类进行分析,得到存在风险的函数信息和类信息;文件分析单元依据预设的文件风险阈值对获取的代码文件和代码文件的修改记录进行分析,得到存在风险的代码文件信息;报告生成单元依据所述存在风险的函数信息、类信息和代码文件信息生成代码风险报告。根据本发明专利技术提供的技术方案,能够有效检测出软件产品的代码中的风险。

【技术实现步骤摘要】
一种代码风险的检测方法及装置
本专利技术涉及软件测试技术,尤其涉及一种代码风险的检测方法及装置。
技术介绍
软件产品是需要最终交付给用户,由用户直接或间接的使用软件产品;其中,代码用于正确且详细的描述软件,是软件的最终载体,因此代码的质量对软件的质量具有重要意义。代码风险是区别于代码中语法错误和语义错误的一种代码异常情况,代码风险并不是一种代码错误,而是从软件产品的代码的可靠性、可测性、可读心和可维护性等角度出发,对不符合条件的代码给出提示信息的代码质量的控制手段。目前的代码质量检测工具都是对语法错误、语义错误或编程规范等进行检测,并给出检测结果,例如,PC-Lint是一款C/C++软件代码静态分析工具,能够检测出使用未初始化的变量等一般的语法错误。Logiscope是用于保证软件质量和进行软件测试的测试产品,能够对代码中的语法错误进行检测。但是,目前没有对代码风险进行检测的工具和方法。
技术实现思路
本专利技术提供了一种代码风险的检测方法及装置,能够有效检测出软件产品的代码中的风险。本专利技术的具体技术方案如下:根据本专利技术一优选实施例,一种代码风险的检测装置,包括:扫描单元、代码分析单元、文件分析单元、报告生成单元;其中,扫描单元,用于从预设的代码文件中提取函数和类;代码分析单元,用于依据预设的函数风险阈值和类风险阈值分别对所述函数和所述类进行分析,得到存在风险的函数信息和类信息;文件分析单元,用于依据预设的文件风险阈值对获取的代码文件和代码文件的修改记录进行分析,得到存在风险的代码文件信息;报告生成单元,用于依据所述存在风险的函数信息、类信息和代码文件信息生成代码风险报告。上述装置中,代码分析单元对函数进行分析具体包括:代码分析单元对函数的嵌套深度、函数的行数、函数内局部变量个数和圈复杂度进行分析。上述装置中,代码分析单元获得函数的嵌套深度具体包括:当识别出函数中一行代码比前一行代码缩进时,函数的缩进深度加1;或,当识别出一组嵌套字符时,函数的嵌套的层级数加1。上述装置中,代码分析单元获得函数内局部变量的个数具体包括:当在函数的代码中识别出与预设的局部变量名相同的局部变量时,将函数内局部变量的个数加1。上述装置中,代码分析单元获得函数的圈复杂度具体包括:在函数中识别出逻辑判断词时,在圈复杂度基数上将所述函数的圈复杂度加1。上述装置中,代码分析单元对类进行分析具体包括:代码分析单元对类的离心耦合度进行分析。上述装置中,代码分析单元获得类的离心耦合度具体包括:依据识别出的类与类之间的调用关系,得到类调用的外部类的数目,所述类调用的外部类的数目等于离心耦合度。上述装置中,文件分析单元对代码文件进行分析具体包括:代码分析单元对代码文件的总行数进行分析。上述装置中,文件分析单元获得代码文件的总行数具体包括:文件分析单元调用行数统计命令,将代码文件的文件名作为参数值输入所述行数统计命令;所述行数统计命令运行后依据所述文件名找到代码文件,统计所述代码文件的总行数。上述装置中,文件分析单元对代码文件的修改记录进行分析具体包括:代码分析单元对代码文件的修改次数和修改代码文件的人员信息进行分析。上述装置中,代码分析单元获得代码文件的修改次数具体包括:文件分析单元依据预设的修订记录格式,确定版本号字段在代码文件的修订记录中的位置,依据所述位置在代码文件的修改记录中找到版本号,并统计版本号的总数,所述版本号的数量等于代码文件的修改次数。上述装置中,代码分析单元获得修改代码文件的人员信息具体包括:文件分析单元依据预设的修订记录格式,确定人员信息字段在代码文件的修订记录中的位置,依据所述位置在代码文件的修改记录中找到修改代码文件的人员信息,并统计修改代码文件的人员信息数。一种代码风险的检测方法,包括:扫描单元从预设的代码文件中提取函数和类;代码分析单元依据预设的函数风险阈值和类风险阈值分别对所述函数和所述类进行分析,得到存在风险的函数信息和类信息;文件分析单元依据预设的文件风险阈值对获取的代码文件和代码文件的修改记录进行分析,得到存在风险的代码文件信息;报告生成单元依据所述存在风险的函数信息、类信息和代码文件信息生成代码风险报告。上述方法中,代码分析单元对函数进行分析的方法为:代码分析单元对函数的嵌套深度、函数的行数、函数内局部变量个数和圈复杂度进行分析。上述方法中,代码分析单元获得函数的嵌套深度的方法为:当识别出函数中一行代码比前一行代码缩进时,函数的缩进深度加1;或,当识别出一组嵌套字符时,函数的嵌套的层级数加1。上述方法中,代码分析单元获得函数内局部变量的个数的方法为:当在函数的代码中识别出与预设的局部变量名相同的局部变量时,将函数内局部变量的个数加1。上述方法中,代码分析单元获得函数的圈复杂度的方法为:在函数中识别出逻辑判断词时,在圈复杂度基数上将所述函数的圈复杂度加1。上述方法中,代码分析单元对类进行分析的方法为:代码分析单元对类的离心耦合度进行分析。上述方法中,代码分析单元获得类的离心耦合度的方法为:依据识别出的类与类之间的调用关系,得到类调用的外部类的数目,所述类调用的外部类的数目等于离心耦合度。上述方法中,文件分析单元对代码文件进行分析的方法为:代码分析单元对代码文件的总行数进行分析。上述方法中,文件分析单元获得代码文件的总行数的方法为:文件分析单元调用行数统计命令,将代码文件的文件名作为参数值输入所述行数统计命令;所述行数统计命令运行后依据所述文件名找到代码文件,统计所述代码文件的总行数。上述方法中,文件分析单元对代码文件的修改记录进行分析的方法为:代码分析单元对代码文件的修改次数和修改代码文件的人员信息进行分析。上述方法中,代码分析单元获得代码文件的修改次数的方法为:文件分析单元依据预设的修订记录格式,确定版本号字段在代码文件的修订记录中的位置,依据所述位置在代码文件的修改记录中找到版本号,并统计版本号的总数,所述版本号的数量等于代码文件的修改次数。上述方法中,代码分析单元获得修改代码文件的人员信息的方法为:文件分析单元依据预设的修订记录格式,确定人员信息字段在代码文件的修订记录中的位置,依据所述位置在代码文件的修改记录中找到修改代码文件的人员信息,并统计修改代码文件的人员信息数。由以上技术方案可以看出,本专利技术提供的具有以下有益效果:从代码的类信息、函数信息和代码文件三个方面对软件的代码进行分析,不是简单的对代码进行语法错误、语义错误或编程规范等的检查,而是综合分析整个代码,自动地、准确地检测出代码中隐藏的风险,并给出风险提示信息,提醒研发人员对代码中的风险进行修改,提高代码的可靠性、可测性、可读性、和可维护性,保证代码的质量,从而提高软件产品的质量;此外,帮助研发人员及时发现并规避代码中可能出现的问题,减少软件在线上出现bug的概率,增强代码的健壮性和稳定性。【附图说明】图1是本专利技术实现代码风险的检测装置的优选实施例的结构示意图;图2是本专利技术实现代码风险的检测方法的优选实施例的结构示意图。【具体实施方式】本专利技术的基本思想是:扫描单元从预设的代码文件中提取函数和类;代码分析单元依据预设的函数风险阈值和类风险阈值分别对所述函数和所述类进行分析,得到存在风险的函数信息和类信息;文件分析单元依据预设的本文档来自技高网...

【技术保护点】
1.一种代码风险的检测装置,其特征在于,该装置包括:扫描单元、代码分析单元、文件分析单元、报告生成单元;其中,扫描单元,用于从预设的代码文件中提取函数和类;代码分析单元,用于依据预设的函数风险阈值和类风险阈值分别对所述函数和所述类进行分析,得到存在风险的函数信息和类信息;文件分析单元,用于依据预设的文件风险阈值对获取的代码文件和代码文件的修改记录进行分析,得到存在风险的代码文件信息;其中,文件分析单元对代码文件进行分析具体包括代码分析单元对代码文件的总行数进行分析;文件分析单元对代码文件的修改记录进行分析具体包括代码分析单元对代码文件的修改次数和修改代码文件的人员信息进行分析;报告生成单元,用于依据所述存在风险的函数信息、类信息和代码文件信息生成代码风险报告。

【技术特征摘要】
1.一种代码风险的检测装置,其特征在于,该装置包括:扫描单元、代码分析单元、文件分析单元、报告生成单元;其中,扫描单元,用于从预设的代码文件中提取函数和类;代码分析单元,用于依据预设的函数风险阈值和类风险阈值分别对所述函数和所述类进行分析,得到存在风险的函数信息和类信息;文件分析单元,用于依据预设的文件风险阈值对获取的代码文件和代码文件的修改记录进行分析,得到存在风险的代码文件信息;其中,文件分析单元对代码文件进行分析具体包括代码分析单元对代码文件的总行数进行分析;文件分析单元对代码文件的修改记录进行分析具体包括代码分析单元对代码文件的修改次数和修改代码文件的人员信息进行分析;报告生成单元,用于依据所述存在风险的函数信息、类信息和代码文件信息生成代码风险报告。2.根据权利要求1所述的装置,其特征在于,代码分析单元对函数进行分析具体包括:代码分析单元对函数的嵌套深度、函数的行数、函数内局部变量个数和圈复杂度进行分析。3.根据权利要求2所述的装置,其特征在于,代码分析单元获得函数的嵌套深度具体包括:当识别出函数中一行代码比前一行代码缩进时,函数的缩进深度加1;或,当识别出一组嵌套字符时,函数的嵌套的层级数加1。4.根据权利要求2所述的装置,其特征在于,代码分析单元获得函数内局部变量的个数具体包括:当在函数的代码中识别出与预设的局部变量名相同的局部变量时,将函数内局部变量的个数加1。5.根据权利要求2所述的装置,其特征在于,代码分析单元获得函数的圈复杂度具体包括:在函数中识别出逻辑判断词时,在圈复杂度基数上将所述函数的圈复杂度加1。6.根据权利要求1所述的装置,其特征在于,代码分析单元对类进行分析具体包括:代码分析单元对类的离心耦合度进行分析。7.根据权利要求6所述的装置,其特征在于,代码分析单元获得类的离心耦合度具体包括:依据识别出的类与类之间的调用关系,得到类调用的外部类的数目,所述类调用的外部类的数目等于离心耦合度。8.根据权利要求1所述的装置,其特征在于,文件分析单元获得代码文件的总行数具体包括:文件分析单元调用行数统计命令,将代码文件的文件名作为参数值输入所述行数统计命令;所述行数统计命令运行后依据所述文件名找到代码文件,统计所述代码文件的总行数。9.根据权利要求1所述的装置,其特征在于,代码分析单元获得代码文件的修改次数具体包括:文件分析单元依据预设的修订记录格式,确定版本号字段在代码文件的修订记录中的位置,依据所述位置在代码文件的修改记录中找到版本号,并统计版本号的总数,所述版本号的数量等于代码文件的修改次数。10.根据权利要求1所述的装置,其特征在于,代码分析单元获得修改代码文件的人员信息具体包括:文件分析单元依据预设的修订记录格式,确定人员信息字段在代码文件的修订记录中的位置,依据所述位置在代码文件的修改记录中找到修改代码文件的人员信息,并统计修改...

【专利技术属性】
技术研发人员:于金伦万东海叶茂
申请(专利权)人:百度在线网络技术北京有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1