gpt4 book ai didi

code-coverage - 让llvm-cov与codecov.io交谈

转载 作者:行者123 更新时间:2023-12-01 00:18:31 25 4
gpt4 key购买 nike

我正在(最终!)为我的全新C++项目设置代码覆盖率监视。由于我需要一些高级C++ 20功能(读取,协程),因此我将clang 6用作编译器。

现在,我跟随this guide讨论了如何为您的项目进行基本代码覆盖,并且一切工作都变得神奇。如果我做:

clang++ -fprofile-instr-generate -fcoverage-mapping test.cpp -o test.out
LLVM_PROFILE_FILE="coverage/test.profraw" ./test.out
llvm-profdata merge -sparse coverage/test.profraw -o coverage/test.profdata
llvm-cov show ./test.out -instr-profile=coverage/test.profdata

我在终端上收到一份漂亮的彩色报告,告诉我涵盖了哪些内容,哪些没有涵盖。

到现在为止还挺好!我以为自己已经接近想要的了,但是当我尝试将报告上传到 codecov.io时,痛苦就开始了。

我已经尝试了一些方法,包括:
  • 在我的https://codecov.io/bash文件夹上运行其coverage脚本,希望它可能会 catch 我的test.profdata。没有骰子,这很有意义,因为即使llvm-cov都需要运行可执行文件的路径。
  • 使用export功能:运行llvm-cov export --instr-profile=coverage/test.profdata ./test.out时(通过终端)我得到了一个漂亮的JSON文件。我尝试将输出扔到coverage.json文件中,该文件实际上已上载,但是codecov只是说解析它时出错,没有更多信息。

  • 我感觉完全迷失了。他们网站上的一切看上去都像黑盒子一样,以至于我只是不知道该如何完成那些偶然遇到的事情而无法完全适应他们所能处理的情况。

    我怎样才能与codecov一起使用?如果codecov无法处理我的报告,我是否可以使用其他等效的在线代码覆盖范围来使此工作正常进行?

    最佳答案

    看起来,codecov使用bash脚本将覆盖率数据上传到其站点,以查找与多种格式相匹配的文件,这些格式与它所理解的格式相关联。这些文档的文献很少,但是您至少可以通过查看the script on Github来查看哪些模式是可行的。当然,这并不能告诉您,codecov对匹配给定模式的文件格式有什么期望,就像您在拒绝coverage.json文件时所发现的那样。
    通过反复试验,我发现以下代码会生成一个文件,当您运行bash脚本时,codecov会正确解释该文件:llvm-cov show ./test.out -instr-profile=default.profdata > coverage.txt我还没有广泛测试允许的文件名,但是似乎可以在覆盖范围数据传递到的文件名中,在coverage.txt之间放置任何所需的其他字符(例如,可以将其命名为coverage_my_file_name.txt )。
    编辑:以防万一这对任何人都有用,事实证明,上述重要推论是,避免命名不属于Coverage报告的任何东西都符合此模式是至关重要的。我只是在处理一个方案,其中有一堆名为coverage_ [more_text_here] .out的可执行文件随报告一起上传。事实证明,尝试将汇编代码解析为覆盖率报告会导致codecov神秘地失败而没有任何有用的错误。

    关于code-coverage - 让llvm-cov与codecov.io交谈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50613601/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com