一种代码覆盖率统计方法、系统、装置及计算机存储介质制造方法及图纸

技术编号:17346121 阅读:31 留言:0更新日期:2018-02-25 11:13
本发明专利技术公开了一种代码覆盖率统计方法、系统、装置及计算机存储介质,应用于用户态网络文件系统NFS‑Ganesha,获取编译运行正确的NFS‑Ganesha源码,并在NFS‑Ganesha源码中添加gcov/lcov函数库、genhtml函数库和lib库文件;在NFS‑Ganesha源码中添加用于指示编译时自动加载函数库和lib库文件的开关选项和预先设定的编译参数;开关选项为打开状态且编译参数添加完毕后,根据用户的编译命令编译NFS‑Ganesha源码生成.gcno文件,并运行编译后的NFS‑Ganesha源码生成.gcda文件。本申请实现了编译NFS‑Ganesha源码的同时自动统计代码覆盖率。

【技术实现步骤摘要】
一种代码覆盖率统计方法、系统、装置及计算机存储介质
本专利技术涉及代码质量测试领域,特别是涉及一种代码覆盖率统计方法、系统、装置及计算机存储介质。
技术介绍
NFS-Ganesha(NetworkFileSystemuser-space,用户态网络文件系统)是指只能受限的访问内存,不能访问硬盘、网卡等外围设备,占用CPU(CentralProcessingUnit,中央处理器)的能力被剥夺,CPU资源可以被其他程序获取的网络文件系统。在系统服务出现故障的场景下,相比于NFS(NetworkFileSystem,内核态网络文件系统),NFS-Ganesha具有较好管理性和可维护性,从而在大数据海量分布式对象存储的场景中具有广泛的应用前景。具体地,NFS-Ganesha属于开源项目,其代码属于开源代码,开源代码的质量需要进行不断的完善。现有技术中通常将代码覆盖率作为衡量代码质量的准则,代码覆盖率描述系统中代码被测试的比例和程度,代码覆盖率越高代码的质量越高。然而现有技术中,没有针对NFS-Ganesha的代码覆盖率统计方法,从而无法根据代码覆盖率统计结果来完善NFS-Ganesha的代码质量,使得NFS-Ganesha的易维护性和易测试性较差,增加了代码维护成本。因此,如何提供一种解决上述技术问题的方案是本领域的技术人员目前需要解决的问题。
技术实现思路
本专利技术的目的是提供一种代码覆盖率统计方法、系统、装置及计算机存储介质,实现了编译NFS-Ganesha源码的同时自动化进行代码覆盖率统计,有助于用户根据得到的代码覆盖率统计数据来完善NFS-Ganesha的代码质量,提高了NFS-Ganesha的易维护性和易测试性,降低了代码维护成本。为解决上述技术问题,本专利技术提供了一种代码覆盖率统计方法,应用于用户态网络文件系统NFS-Ganesha,包括:获取编译运行正确的NFS-Ganesha源码,并在所述NFS-Ganesha源码中添加gcov/lcov函数库、genhtml函数库和lib库文件;在所述NFS-Ganesha源码中添加用于指示编译时自动加载所述函数库和所述lib库文件的开关选项和预先设定的编译参数;所述开关选项为打开状态且所述编译参数添加完毕后,根据用户的编译命令编译所述NFS-Ganesha源码生成.gcno文件,并运行编译后的所述NFS-Ganesha源码生成.gcda文件。优选地,所述获取编译运行正确的NFS-Ganesha源码的过程具体为:接收用户的选择指令,并根据所述选择指令确定NFS-Ganesha源码环境、编译工具和NFS-Ganesha源码;通过所述编译工具在外部编译目录编译所述NFS-Ganesha源码,根据编译结果获取编译运行正确的NFS-Ganesha源码。优选地,所述编译工具为cmake;则所述在所述NFS-Ganesha源码中添加gcov/lcov函数库、genhtml函数库和lib库文件的过程具体为:在所述NFS-Ganesha源码中的cmake子目录中的modules中添加gcov/lcov函数库、genhtml函数库和lib库文件;则所述在所述NFS-Ganesha源码中添加用于指示编译时自动加载所述函数库和所述lib库文件的开关选项和预先设定的编译参数的过程具体为:在所述NFS-Ganesha源码中的CMakeLists.txt文件中添加用于指示编译时自动加载所述函数库和所述lib库文件的开关选项和预先设定的编译参数。优选地,所述预先设定的编译参数包括编译选项和链接选项。优选地,所述添加编译选项的过程具体为:当所述CMakeLists.txt文件为手动编写的CMakeLists.txt文件时,根据用户的添加指令添加所述编译选项;当所述CMakeLists.txt文件为自动生成的CMakeLists.txt文件时,运行./configure–h,通过设置环境变量添加所述编译选项。优选地,该方法还包括:接收用户的lcov命令,并根据所述lcov命令、生成的所述.gcno文件和生成的所述.gcda文件获取所述NFS-Ganesha源码的整体代码覆盖情况。优选地,该方法还包括:接收用户的genhtml命令,并根据所述genhtml命令、生成的所述.gcno文件和生成的所述.gcda文件获取所述NFS-Ganesha源码的总体代码覆盖率视图和网页视图。为解决上述技术问题,本专利技术还提供了一种代码覆盖率统计系统,应用于用户态网络文件系统NFS-Ganesha,包括:获取模块,用于获取编译运行正确的NFS-Ganesha源码,并在所述NFS-Ganesha源码中添加gcov/lcov函数库、genhtml函数库和lib库文件;添加模块,用于在所述NFS-Ganesha源码中添加用于指示编译时自动加载所述函数库和所述lib库文件的开关选项和预先设定的编译参数;统计模块,用于所述开关选项为打开状态且所述编译参数添加完毕后,根据用户的编译命令编译所述NFS-Ganesha源码生成.gcno文件,并运行编译后的所述NFS-Ganesha源码生成.gcda文件。为解决上述技术问题,本专利技术还提供了一种代码覆盖率统计装置,应用于用户态网络文件系统NFS-Ganesha,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现上述任一项所述代码覆盖率统计方法的步骤。为解决上述技术问题,本专利技术还提供了一种计算机可读存储介质,应用于用户态网络文件系统NFS-Ganesha,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述代码覆盖率统计方法的步骤。本专利技术提供了一种代码覆盖率统计方法,应用于用户态网络文件系统NFS-Ganesha,包括:获取编译运行正确的NFS-Ganesha源码,并在NFS-Ganesha源码中添加gcov/lcov函数库、genhtml函数库和lib库文件;在NFS-Ganesha源码中添加用于指示编译时自动加载函数库和lib库文件的开关选项和预先设定的编译参数;开关选项为打开状态且编译参数添加完毕后,根据用户的编译命令编译NFS-Ganesha源码生成.gcno文件,并运行编译后的NFS-Ganesha源码生成.gcda文件。可见,本申请由于在NFS-Ganesha源码中添加了开关选项,当添加的开关选项为打开状态时,可以在对NFS-Ganesha源码进行编译的同时自动加载函数库和lib库文件生成.gcno文件,并在运行编译后的NFS-Ganesha源码时生成.gcda文件,也即NFS-Ganesha源码的代码覆盖率统计数据,实现了编译NFS-Ganesha源码的同时自动化进行代码覆盖率统计。本专利技术有助于用户根据得到的代码覆盖率统计数据来完善NFS-Ganesha的代码质量,提高了NFS-Ganesha的易维护性和易测试性,降低了代码维护成本。本专利技术还提供了一种代码覆盖率统计系统、装置及计算机存储介质,具有如上述方法相同的有益效果。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付本文档来自技高网...
一种代码覆盖率统计方法、系统、装置及计算机存储介质

【技术保护点】
一种代码覆盖率统计方法,应用于用户态网络文件系统NFS‑Ganesha,其特征在于,包括:获取编译运行正确的NFS‑Ganesha源码,并在所述NFS‑Ganesha源码中添加gcov/lcov函数库、genhtml函数库和lib库文件;在所述NFS‑Ganesha源码中添加用于指示编译时自动加载所述函数库和所述lib库文件的开关选项和预先设定的编译参数;所述开关选项为打开状态且所述编译参数添加完毕后,根据用户的编译命令编译所述NFS‑Ganesha源码生成.gcno文件,并运行编译后的所述NFS‑Ganesha源码生成.gcda文件。

【技术特征摘要】
1.一种代码覆盖率统计方法,应用于用户态网络文件系统NFS-Ganesha,其特征在于,包括:获取编译运行正确的NFS-Ganesha源码,并在所述NFS-Ganesha源码中添加gcov/lcov函数库、genhtml函数库和lib库文件;在所述NFS-Ganesha源码中添加用于指示编译时自动加载所述函数库和所述lib库文件的开关选项和预先设定的编译参数;所述开关选项为打开状态且所述编译参数添加完毕后,根据用户的编译命令编译所述NFS-Ganesha源码生成.gcno文件,并运行编译后的所述NFS-Ganesha源码生成.gcda文件。2.如权利要求1所述的方法,其特征在于,所述获取编译运行正确的NFS-Ganesha源码的过程具体为:接收用户的选择指令,并根据所述选择指令确定NFS-Ganesha源码环境、编译工具和NFS-Ganesha源码;通过所述编译工具在外部编译目录编译所述NFS-Ganesha源码,根据编译结果获取编译运行正确的NFS-Ganesha源码。3.如权利要求2所述的方法,其特征在于,所述编译工具为cmake;则所述在所述NFS-Ganesha源码中添加gcov/lcov函数库、genhtml函数库和lib库文件的过程具体为:在所述NFS-Ganesha源码中的cmake子目录中的modules中添加gcov/lcov函数库、genhtml函数库和lib库文件;则所述在所述NFS-Ganesha源码中添加用于指示编译时自动加载所述函数库和所述lib库文件的开关选项和预先设定的编译参数的过程具体为:在所述NFS-Ganesha源码中的CMakeLists.txt文件中添加用于指示编译时自动加载所述函数库和所述lib库文件的开关选项和预先设定的编译参数。4.如权利要求3所述的方法,其特征在于,所述预先设定的编译参数包括编译选项和链接选项。5.如权利要求4所述的方法,其特征在于,所述添加编译选项的过程具体为:当所述CMakeLists.txt文件...

【专利技术属性】
技术研发人员:臧林劼
申请(专利权)人:郑州云海信息技术有限公司
类型:发明
国别省市:河南,41

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

1