Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何在已安装的Cocoa应用程序上运行Gcov?_Objective C_Cocoa_Xcode_Code Coverage_Gcov - Fatal编程技术网

Objective c 如何在已安装的Cocoa应用程序上运行Gcov?

Objective c 如何在已安装的Cocoa应用程序上运行Gcov?,objective-c,cocoa,xcode,code-coverage,gcov,Objective C,Cocoa,Xcode,Code Coverage,Gcov,我有一个Cocoa应用程序,它使用安装程序。我希望能够在代码上运行代码覆盖率(安装后) 这不是通常的单元测试场景,其中单个二进制文件将运行一组测试。相反,所讨论的测试将在运行时与UI和应用程序后端交互,因此我理想情况下希望能够在知道Gcov正在对其进行评测的情况下启动应用程序,然后对其运行测试 有什么想法吗 更新 感谢mustISignUp。为了澄清我为什么提出这个问题: 我犯的错误是认为对象、.gcno和.gcda文件必须与二进制文件一起安装(从而使安装程序变得困难)。碰巧,文件的原始位置与检

我有一个Cocoa应用程序,它使用安装程序。我希望能够在代码上运行代码覆盖率(安装后)

这不是通常的单元测试场景,其中单个二进制文件将运行一组测试。相反,所讨论的测试将在运行时与UI和应用程序后端交互,因此我理想情况下希望能够在知道Gcov正在对其进行评测的情况下启动应用程序,然后对其运行测试

有什么想法吗

更新

感谢mustISignUp。为了澄清我为什么提出这个问题:

我犯的错误是认为对象、.gcno和.gcda文件必须与二进制文件一起安装(从而使安装程序变得困难)。碰巧,文件的原始位置与检测代码一起硬连接到代码中

我使用的解决方案是在构建机上压缩代码,并将其放在测试机的磁盘上
lcov
(或者只是
gcov
)可以从那里运行。或者,将在磁盘上创建.gcda文件,并且必须将它们复制回包含源代码的计算机


无论采用哪种方式,源代码都不必在安装和运行时出现,但如果您希望以lcov方式返回结果,则生成的覆盖率计数器文件必须与源代码保持一致。

应用程序需要使用正确的GCC标志进行编译,该标志将在代码中插入评测指令。它不是你可以打开和关闭的东西。ie在编译时修改代码以输出覆盖率信息


因此,如果您使用正确的标志编译应用程序,它将发出覆盖率数据,如果您不使用,它将不会发出覆盖率数据(对于您要发布的应用程序,您肯定不希望它发出覆盖率数据)。

应用程序需要使用正确的GCC标志编译,这将在代码中插入分析指令。它不是你可以打开和关闭的东西。ie在编译时修改代码以输出覆盖率信息

因此,如果您使用正确的标志编译应用程序,它将发出覆盖率数据,如果您不这样做,它将不会发出覆盖率数据(对于您要发布的应用程序,您当然不希望它发出覆盖率数据)