美文网首页
如何自动化分析代码覆盖率(How to Use the Code

如何自动化分析代码覆盖率(How to Use the Code

作者: BarretX | 来源:发表于2017-10-31 20:45 被阅读0次

    由于项目CI方面需求,前段时间学习和使用了微软的代码覆盖率(Code Coverage)分析工具,当时着手做时,发现网上资料非常欠缺,遇到了不少坑,在此做个总结,希望能帮到有这方面需求的人。
    Code Coverage,代码覆盖率,是CI的需求一部分。微软VS ultimate版本提供了测试Code Coverage的选项,也提供了相应的命令行工具。

    使用微软命令行工具分析Code Coverage

    image
    1. Instrument,可以理解为配备或准备的意思,这一步使用的工具Vsinstr.exe,它需要将被测程序集名称作为参数,主要作用是将需要测量的程序集分块,并插入监听程序,在这个工程中,需要程序集对应的PDB文件。
    2. 开启监听,并收集覆盖率。这一步用到的工具是Vsperfcmd.exe,它会开启一个监听程序Vsperfmon.exe,当Instrumented的程序集被覆盖到时,会Vsperfmon.exe会收到通知。
    3. 运行测试用例。
    4. 使用Vsperfcmd,输入与上面不同的参数,停止监听,生成Code Coverage报告。

    遵循这四步的Workflow

    1. 首先安装需要分析Code Coverage的产品
    2. 将PDB拷贝到程序集所在的目录,这里需要注意的是,我们需要分析Code Coverage的程序集有可能并不是都在一个目录,这时,需要我们将PDB文件拷贝到多个地方。
    3. 编写脚本
    • Instrumt
    Vsinstr -coverage <myprojectbinary  the dll/exe>
    ...
    Vsinstr -coverage <myprojectbinary the dll/exe>
    
    • 开始脚本
    VSPerfCmd.exe /start:coverage /output:"*.Coverage"
    或
    Start vsperfmon -coverage -output:mytestrun.coverage
    
    • 结束脚本
    vsperfcmd –shutdown
    
    1. 运行开始脚本,这一步做的是Instrumt,并且开始监控
    2. 运行测试用例
    3. 运行结束脚本,这一步的作用是结束监听,并且生成报告

    最后值得注意的事项

    1. 在分析Code Coverage的过程中,后台会启动一个VSPerfMon.exed的进程,用于收集Code Coverage信息,只要这个进程结束,收集会终止,所以在这个过程中,关机或者手动关闭这个进程,都会影响分析结果的准确性。
    2. 得到的*.coverage文件是与Instrumented的程序集以及PDB文件相关联的,如果需要保存和转移,微软官网给我们的建议是通过VS转换成XML格式。
    3. Instrument过程中需要程序集的名字作为参数,这意味着,如果我们项目工程增多了,需要对新增加的程序集进行分析,就需要修改脚本。
    4. 第四点值得开发人员注意,微软根据Block的概念计算Code Coverage,而Block的概念是与Instrumented 程序集中的CIL对应的,并不是我们实际的Code,所以我们如果我们从Code文本出发来理解VS中Code Coverage百分比时,往往会比较迷惑。实际上,我们也没有必要这样去做。
    5. Last but not least, 最权威的资料

    相关文章

      网友评论

          本文标题:如何自动化分析代码覆盖率(How to Use the Code

          本文链接:https://www.haomeiwen.com/subject/djripxtx.html