ios6 – 如何使用gcovr for iOS生成Cobertura格式的xml文件?

ios6 – 如何使用gcovr for iOS生成Cobertura格式的xml文件?,第1张

概述我正在使用Apple LLVM Compiler 4.1在 Xcode 4.5上运行的iOS项目上生成代码覆盖率数据文件(.gdca和.gcno). 文件正在Library / Developer / Xcode / DerivedData / viewer-evgaabclrjcouydwveuptwroeofm / Build / Intermediates / viewer.build / 我正在使用Apple LLVM Compiler 4.1在 Xcode 4.5上运行的iOS项目上生成代码覆盖率数据文件(.gdca和.gcno).

文件正在library / Developer / Xcode / DerivedData / vIEwer-evgaabclrjcouyDWveuptwroeofm / Build / Intermediates / vIEwer.build / Coverage-iphonesimulator / vIEwer_generic / vIEwer_generic.build / Objects-normal / i386下生成.

所有(.o,.d,.dia,.gcda,.gdno)文件都在此目录下.没有子文件夹.

我可以使用Cover Story打开单个.gcda文件.现在我想生成一个可以使用cobertura查看的报告.

我正在尝试使用gcovr.在终端我到了上面的文件夹

Command: gcovr -r `pwd` -x -vOutput:(Several lines of similar output as below)Running gcov: 'gcov /Users/abc/library/Developer/Xcode/DerivedData/vIEwer-evgaabclrjcouyDWveuptwroeofm/Build/Intermediates/vIEwer.build/Coverage-iphonesimulator/vIEwer_generic/vIEwer_generic.build/Objects-normal/i386/file_name.gcda --branch-counts --branch-probabilitIEs --preserve-paths --object-directory /Users/abc/library/Developer/Xcode/DerivedData/vIEwer-evgaabclrjcouyDWveuptwroeofm/Build/Intermediates/vIEwer.build/Coverage-iphonesimulator/vIEwer_generic/vIEwer_generic.build/Objects-normal/i386' in '/Users/abc/library/Developer/Xcode/DerivedData/vIEwer-evgaabclrjcouyDWveuptwroeofm/Build/Intermediates/vIEwer.build/Coverage-iphonesimulator/vIEwer_generic/vIEwer_generic.build/Objects-normal/i386'    Parsing coverage data for file /Users/abc/documents/Perforce/DPS-MacBookPro/depot/sandBox/VIEwer-Labatt/Blue/vIEwers/ipadvIEwer/iphone/apps/vIEwer/Classes/vIEw/zooming/file_name.mm    Filtering coverage data for file /Users/abc/documents/Perforce/DPS-MacBookPro/depot/sandBox/VIEwer-Labatt/Blue/vIEwers/ipadvIEwer/iphone/apps/vIEwer/Classes/vIEw/zooming/file_name.mm    Gathered coveraged data for 0 files    <?xml version="1.0" ?>    <!DOCTYPE coverage      SYstem 'http://cobertura.sourceforge.net/xml/coverage-03.dtd'>    <coverage branch-rate="0.0" line-rate="0.0" timestamp="1354144430" version="gcovr 2.4 (r2774)">        <sources>            <source>                /Users/abc/library/Developer/Xcode/DerivedData/vIEwer-evgaabclrjcouyDWveuptwroeofm/Build/Intermediates/vIEwer.build/Coverage-iphonesimulator/vIEwer_generic/vIEwer_generic.build/Objects-normal/i386            </source>        </sources>        <packages/>    </coverage>

我看到一个警告:gcno:版本’404′,更喜欢’402′

请帮我弄清楚为什么gcovr无法生成报告.

解决方法 Tl; dr:LLVM输出的代码覆盖率文件比gcovr预期的更新.如果您使用链接版本(版本2.4)替换您的gcovr版本,那么它应该可以工作.也许.

在LLVM之前,Xcode使用GCC作为其编译器. GCC包含一个名为’gcov’的工具,它生成了所有这些文件,.gcno,.gcda及其同类.

那时候,Macs预装了(现在仍然是)GCC版本4.2.因此,Xcode将使用gcc 4.2编译您的项目,然后运行gcov 4.2版,这将生成4.2版本的测试覆盖文件.这对gcovr来说很好,因为2.0之前的Alpha版本似乎是用gcov 4.2编写的.

但是,当苹果公司改用LLVM时,情况就变得很糟糕了.如果在目标设置中设置“生成测试覆盖率文件”标志,LLVM还会输出gcov样式的测试覆盖率文件.但是,LLVM默认输出gcov 4.4文件,而不是4.2.

This person认为如果我们可以告诉LLVM输出4.2版本的文件(我认为它可能在技术上可以),那么它将解决问题.这可能是真的,但我不知道该怎么做.

然而,我确实找到了自己的解决方案.我打开终端,检查了我的gcovr版本:

gcovr --version

它告诉我,我的gcovr版本实际上是gcovr 2.0-prerelease.此版本不支持gcov 4.4版本的测试覆盖率文件.

所以我发现了一个版本.

这是托管的页面:https://software.sandia.gov/trac/fast/wiki/gcovr

以下是脚本本身的链接:https://software.sandia.gov/trac/fast/export/2800/gcovr/trunk/scripts/gcovr

这个脚本是gcovr 2.4,它支持最高gcc 4.8.从理论上讲,它应该对LLVM输出的4.4版本的测试覆盖文件非常满意.这个警告现在完全消失了.试一试,让我知道它是怎么回事!

总结

以上是内存溢出为你收集整理的ios6 – 如何使用gcovr for iOS生成Cobertura格式的xml文件?全部内容,希望文章能够帮你解决ios6 – 如何使用gcovr for iOS生成Cobertura格式的xml文件?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1074415.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存