我想通过在生成的gcda文件上运行gcovr来查看代码覆盖率。 Jenkins似乎将生成的gcda文件放在Users /../ Library / developer / Xcode / DerivedData /../../../ i386中。我希望它们在Users / Shared / Jenkins / workspace /../ build / example.build / Debug-iphonesimulator / example.build / Objects-normal / i386
当我在本地使用XCode运行我的IOS项目时,它会生成gcda文件,我可以查看我的覆盖范围。 我运行xcode 5,所有测试都是用XCTest创建的。
我为调试和发布设置了'生成测试覆盖率文件= YES'和'仪器程序流程=是',基本上我根据this post
完成了所有工作在Jenkins中,我使用xcode插件来构建。它有两个构建命令。第一个使用目标“example”和配置调试构建。 第二个Xcode构建命令使用目标“ExampleTests”,配置调试,参数“test -destination OS = 7.0,name =”iPhone Retina(4英寸)“和一个方案构建。在输出中我可以看到正在运行的测试模拟器从建筑机械上开始。
似乎我在项目设置中遗漏了一些东西,或者没有在jenkins工作中设置正确的东西。对于XCode5,可能只有TEST_AFTER_BUILD = YES之类的东西。
答案 0 :(得分:3)
正如您所知,.gcda文件放在“错误”目录中。
执行以下操作:
将此脚本粘贴到脚本字段中:
echo "Creating derivedDataDirectory file"
echo "${OBJECT_FILE_DIR_normal}/${CURRENT_ARCH}" > ${PROJECT_DIR}/derivedDataDirectory
(这将创建一个带有derivedDataDirectory路径的文件)
转到您的jenkins项目,点击“添加构建步骤”并选择“执行shell”。
将此脚本粘贴到“命令”字段中:
#CopyCodeCoverageFile
echo "Start copying code coverage Files"
projectname="[YOUR PROJECTNAME]"
source=$(cat ${WORKSPACE}/$projectname/derivedDataDirectory)
cp -a $source/. ${WORKSPACE}/$projectname/
#CodeCoverage
echo "Start CodeCoverage"
cd ${WORKSPACE}/$projectname
[YOUR PATH TO GCOVR]/gcovr -r /private/tmp/workspace/${JOB_NAME}/$projectname --xml > ${WORKSPACE}/$projectname/test-reports/coverage.xml
插入[您的项目名称]和[您的路径到GCOVR]。如果你的PROJECTNAME或目标有 在它的空间,这将导致麻烦!确保所有路径都正确无误!
告诉我,如果某些内容不适合您,或者您找到了更好的解决方案!