代码检测方法及装置的制造方法_2

文档序号:9564519阅读:来源:国知局
所述检测报告进行代码优化。比如,用户根据代码检测工具推送的检测报告,修改代码中的错误、克服代码中存在的缺陷并对代码进行优化重构等,提高代码的性能。
[0039]其中,代码检测工具可以通过邮件的形式将所述检测报告发送至用户关联的邮箱地址中,也可以通过其他方式比如提醒消息、警告通知等形式推送所述检测报告,本发明实施例对代码检测工具推送所述检测报告的具体推送时间和推送方式不进行限定。
[0040]在本发明一优选实施例中,代码检测工具根据扫描出的与所述通用规则库和/或扩展规则库匹配的代码,生成包含警告信息的检测报告中,生成的所述检测报告包括:按照警告类型进行归类后的警告内容,以及所述警告类型分别对应的警告数量;其中,所述警告内容包括:代码所在位置、代码所在的模块名称、代码行数、代码负责人、警告类型、警告描述以及对应的修复建议。
[0041]请参照图2,图2是根据图1所描述的代码检测方法生成的检测报告一实施例界面示意图;如图2所示,代码检测工具检测到与所述通用规则库和/或扩展规则库匹配的代码时,可以生成如图2所示形式的其中一种类型的检测报告。该检测报告总体上先列出代码扫描工具扫描出的警告信息的警告类型以及各警告类型对应的数量。对应于每一种警告类型,该检测报告中对应包含了该警告类型下详细的警告内容,该警告内容包括:代码所在位置、代码所在项目模块的模块名称、该代码的相关负责人等。用户可以通过点击相应的警告类型,查看该警告类型对应的警告内容详情。当代码检测工具接收到查看详情的触发指令时,显示该触发指令指向的警告类型所对应的警告内容,比如针对该代码不符合规则的详细描述及相关修复建议;如图3所示,图3是中图2所示的检测报告对应的警告内容一实施例界面示意图;比如,代码检测工具接收到查看“(Pl)TMSecure FB++Warnings”这一警告类型对应地警告内容详情的触发指令时,代码检测工具显示如图3所示的“ (PDTMSecureFB++Warnings”这一警告类型对应的警告内容。
[0042]进一步地,在本发明一优选实施例中,代码检测工具调用扩展规则库对待检测代码进行静态扫描,以及调用通用规则库和扩展规则库对待检测代码进行静态扫描的同时,按照所述扩展规则库,扫描待检测代码对应的项目模块之间的依赖关系;比如,代码检测工具基于扩展规则库,根据该代码对应的项目配置的模块名称以及模块调用规范等,扫描待检测代码对应的项目模块之间的依赖关系。扫描出待检测代码对应的项目模块之间的依赖关系后,代码检测工具分析所述项目模块之间的依赖关系,生成上述各项目模块对应的可视化依赖关系图,且在生成包括警告信息的所述检测报告时,将生成的所述可视化依赖关系图输出至所述检测报告中,供用户查看,为用户进行代码优化提供依据,从而避免用户进行不合理的依赖关系的修改,提高软件性能。用户基于代码检测工具输出的所述检测报告,查看代码对应的所述可视化依赖关系图;如图4所示,图4是本发明代码检测方法中扫描得出的待检测代码对应的项目模块依赖关系一实施例功能模块示意图;图4中,上述代码所对应的所述可视化依赖关系图一实施例中,模块一和模块三均将数据存储在模块二中;且模块一从模块二中读取数据,并通过超文本传输协议Http网络发送数据至模块三。所述可视化依赖关系图为用户进行代码重构优化、产品规范制定提供依据,方便用户掌握项目代码架构情况,及时发现代码中可能潜在的问题。
[0043]本发明实施例代码检测工具接收代码检测的触发指令,识别所述触发指令的指令类型;并根据具体的所述指令类型,根据通用规则库和/或扩展规则库对待检测代码进行静态扫描;获取与所述通用规则库和/或扩展规则库匹配的代码,生成包含警告信息的检测报告;推送生成的所述检测报告;提高了代码检测的范围及针对性,避免了代码中可能存在的典型错误,提高了代码运行的稳定性、可维护性及对应代码映射的产品功能的一致性;进一步地,由于本发明实施例能够生成代码对应的可视化依赖关系图,为代码优化和代码重构提供了重要依据,避免进行不合理依赖关系的代码优化,提高了代码检测的性能。
[0044]本发明还提供了一种如图5所述的代码检测方法第二实施例;本发明实施例与图1所述实施例的区别是,在进行代码检测之前,配置上述实施例所描述的所述扩展规则库。本发明实施例仅对与上述实施例之间的区别进行描述,有关本发明代码检测方法所涉及的其他描述,请参照上述相关实施例的描述,在此不再赘述。
[0045]如图5所示,本发明代码检测方法在图1实施例所述“步骤S11、接收代码检测的触发指令,识别所述触发指令的指令类型”之前还包括:
[0046]步骤S10、配置所述扩展规则库。
[0047]本发明实施例中,代码检测工具响应扩展规则库配置指令,配置所述扩展规则库。代码检测工具配置的所述扩展规则库包括适用于大部分待检测代码的普适性扩展规则库,以及针对某次代码检测或者针对某个项目对应的代码所对应的针对性扩展规则库。比如,针对待检测代码的特点及用户对待检测代码的具体要求,配置针对上述待检测代码的设计规范、代码规范,以及针对上述待检测代码的运行环境比如上述代码运行在Android操作系统上时,配置对应的Android系统典型问题、该待检测代码对应的项目可能出现的crash问题等。
[0048]所述扩展规则库还包括:在静态代码扫描工具比如FindBugs、PWD等映射的通用规则库的基础上,直接添加针对本次待检测代码对应的扩展规则库,比如,针对待检测代码的特点或者用途或者使用环境等,设置所述待检测代码所需的代码规范、设计规范、异常退出问题以及所述待检测代码运行系统典型问题所对应的规则,比如产品设计规范、团队代码规范、项目代码规范以及Android系统典型问题和项目可能出现的crash问题等对应的规则。
[0049]在本发明一优选实施例中,代码检测工具按照预设周期更新所述扩展规则库,以丰富所述扩展规则库的规则类型;比如,在一次通过静态代码扫描来提高软件的稳定性的代码检测过程中,对于用户检测出的典型错误或者不符合规范的代码,代码检测工具可以将其加入到所述扩展规则库中,从而在后续检测中,能够自动检出上述不符合规则的代码。当然代码检测工具也可以基于用户触发的配置指令,随时更新所述扩展规则库。
[0050]本发明实施例通过配置扩展规则库,为代码检测的准确性、广泛性和智能性提供了重要依据;进一步地,由于按照预设周期定时更新或者基于触发的更新指令实时更新所述扩展规则库,丰富了扩展规则库的内容,进而也提高了代码检测效率。
[0051]本发明实施例还提供一种如图6所示的代码检测装置;如图6所示,本发明代码检测装置包括:代码扫描模块11、报告生成模块12和信息推送模块13。
[0052]代码扫描模块11,用于接收代码检测的触发指令,识别所述触发指令的指令类型;在所述指令类型指向通用规则库时,调用所述通用规则库对所待检测代码进行静态扫描;在所述指令类型指向扩展规则库时,调用所述扩展规则库对待检测代码进行静态扫描;在所述指令类型指向通过规则库和扩展规则库时,调用通用规则库和扩展规则库对待检测代码进行静态扫描;
[0053]接收到代码检测的触发指令时,代码扫描模块11响应所述触发指令,并识别所述触发指令的指令类型;本发明实施例中,由于在代码检测装置进行代码检测时,在不同的应用场景所使用的检测方式不同,即在不同的应用场景中,代码扫描模块11选择使用不同的规则库进行代码扫描。
[0054]根据代码扫描模块11识别出的所述触发指令的指令类型,代码扫描模块11选择不同的规则库对待检测代码进行静态扫描。在所述指令类型指向通用规则库时,代码扫描模块11调用所述通用规则库对所待检测代码进行静态扫描;在所述指令类型指向扩展规则库时,代码扫描模块11调用所述扩展规则库对待检测代码进行静态扫描;在所述指令类型指向通过规则库和扩展规则库时,代码扫描模块11根据预先存储的通用规则库和扩展规则库,对待检测代码进行静态扫描;比如,代码扫描模块11扫描待检测代码中是否存在与所述通用规则库和/或扩展规则库相匹配的代码。
[0055]代码扫描模块11对代码进行静态扫描可以理解为:在不运行上述代码的方式下,通过词法分析、语法分析、控制流分析等技术对上述代码进行扫描,从而验证扫描的所述代码是否满足针对所述代码所要求的规范性、安全性、可靠性、可维护性等指标的一种代码分析技术。其中,所述词法分析可以理解为:计算机科学中将字符序列转换为单词序列的过程;所述语法分析可以理解为:在所述词法分析的基础上,将单词序列组合成各类语法短语、语句、表达式等。
[0056]本发明实施例中,所述通用规则库和扩展规则库可以理解为:根据待检测代码的类型、待检测代码的运行环境以及对该待检测代码的具体要求所设置的或者说所定义的不符合相应要求或规范的规则库;该自定规则库中存储了不符合要求代码,比如典型错误代码、典型代码缺陷、不符合项目设计规范的代码、不符合产品设计规范的代码等。
[0057]在本发明一优选实施例中,所述通用规则库可以理解为:静态代码扫描工具映射的通用规则库,比如代码扫描工具FindBug
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1