问题标签 [lcov]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 在集群中使用 Lcov
我正在一个解决逻辑公式的 C/C++ 应用程序中工作。为了进行覆盖率分析,我使用 Gcov ( http://gcc.gnu.org/onlinedocs/gcc/Gcov.html ) 在集群/网格中执行它,我很高兴因为我可以收集我感兴趣的信息,但另一方面,如果不努力解析获得的数据,就很难获得表示层。
所以我决定使用 Lcov ( http://ltp.sourceforge.net/coverage/lcov.php ),它允许根据结果生成 html 输出,但即使我可以在用户工作站本地执行 Lcov 我想在集群中使用它,但我还没有找到合适的方法在集群中执行 LCov,然后收集所有节点中所有执行的结果,最后生成结合所有结果的 html 输出。
欢迎任何关于我的问题的建议!
提前致谢!
最好的!
bash - 用于移除多个模式的 LCov 选项处理
我需要创建一组要在命令--remove
选项中使用的正则表达式模式lcov
,以删除覆盖文件中的一些无意义的条目。
阅读它的联机帮助页似乎应该将模式列表作为空格分隔的单引号字符串(如 in等)lcov
交给它。'patte*n1' 'pa*ter*2' 'p*3'
我能够编写一个小的 bash 脚本,它以命令所需的形式准确生成我需要的列表。如果我发出
然后,做 a echo $LIST
,我得到了我期望的列表
(正则表达式模式列表由一些要从分析中删除的模式的结尾部分组成)。
当我将此列表传递给命令时出现问题:
为了从我的列表中删除 /usr/* 和文件,但它没有按预期工作:实际上没有从我的路径列表中删除路径。我尝试了不同的形式:
如果我echo $LIST
直接在命令行上获取并复制/粘贴它的输出,则该命令实际上可以工作并删除我想要摆脱的所有路径。我的印象是我不了解某些命令选项处理的所有内部方面以及嵌套命令的评估顺序。
提前感谢任何愿意提供帮助的人!
c - dlopen 无法使用代码覆盖工具 (lcov/gcov)
整个应用程序的结构:
- 共享库说-low_level.so。
- 静态库说 - high_level.a。这个静态库通过调用 dlopen 函数(用于加载 low_level.so)和 dlsym 函数(用于获取将该符号加载到内存中的地址)来使用“low_level.so”。
- 应用程序(带有“main”函数)-该应用程序链接“high_level.a”静态库,该库在内部调用“low_level.so”库中所需的函数。
当前场景(工作/不工作)
- 上述结构适用于我不使用 lcov/gcov 工具进行代码覆盖的情况。
- 我成功地使用了 lcov/gcov 工具来获取“high_level.a”静态库的代码覆盖率。
我尝试使用上述结构中的 lcov/gcov 获取“low_level.so”共享库的代码覆盖率,但没有成功,以下是尝试过的步骤和看到的错误:
在编译“low_level.so”库时添加了“-fprofile-arcs”“-ftest-coverage”标志。并创建了图书馆。
为“high_level.a”库的编译添加了“-coverage”选项。并创建了图书馆。
为应用程序添加了“LFLAGS=-lgcov -coverage”(带有“main”功能)。并创建了可执行应用程序。
现在,当我尝试执行上述编译的应用程序时,我得到以下 dlopen 错误:could not dlopen: /home/test/libXXX.so: undefined symbol: __gcov_merge_add
问题?:
- 这是否意味着 dlopen 不能与 lcov/gcov 一起使用,我们需要实际链接静态库中的共享库(通过更改相同的当前静态库代码)?或者为了使 lcov/gcov 与 dlopen 一起工作,我有什么需要做的吗?
注意:所有代码都在“C”中。
仅供参考,我搜索了相同的内容并发现了一些类似的问题,但仍然落后于选定的最佳答案: 如何找到使用 dlopen() 打开的库的覆盖范围? 除了不使用 dlopen 的选项之外,网上也没有好的指针。
code-coverage - Maven LCOVSensor 分析,但未出现在声纳中
这是我的一部分mvn sonar:sonar
这样 lcov.info 被处理,并且 lcov.info 正确填充了类似的东西
然而,声纳显示为空、0% 覆盖率、不包含文件等。有人提示吗?
ios - IOS项目代码覆盖源文件是相对路径
我在运行我的iphone应用程序后生成了.gcno和.gcda文件。然后我使用封面故事查看覆盖率。但是封面故事无法打开源文件,我发现源路径是相对路径,不是完整的路径。我能看到的全是/ EOF /在屏幕上。对我来说奇怪的是,由于这个路径问题,只有一些文件无法打开。其中大部分是完整路径,封面故事可以成功打开。无法附加截图
如何在 CoverStory 中显示正确的路径名称?
c++ - LCOV 在函数结束时分支
这个函数末尾的分支是什么。我怎么能覆盖它们?
c++ - 如何在宏中排除 lcov 分支
我的代码中有一些日志记录宏,如下所示:
我知道我可以使用 LCOV_EXCL_START、LCOV_EXCL_STOP 或 LCOV_EXCL_LINE 来抑制分支。但这只有在我调用 LOG_MSG 的每个地方都添加它时才有效:
LOG_MSG(ERROR, "An Error has occurred\n");//LCOV_EXCL_LINE
我想在宏中包含该注释,但如果我把它放在那里,LCOV 就无法识别它。例如,此代码仍会产生分支。
有没有一种好方法可以在宏本身中抑制这些分支?
c++ - 使用 gcov 的 C++ 整个代码库覆盖率
我们有大量针对嵌入式 Linux 目标进行交叉编译的 C/C++ 代码。我们最近开始实现在我们的开发服务器(也是 Linux)上运行的单元测试(使用 gmock/gtest)。检测到签入时会自动执行单元测试(我们使用的是 Bamboo)。
我们正在使用 gcov 和 lcov 在这些单元测试期间分析和报告代码覆盖率,效果相当好。然而,鉴于我们没有开始单元测试,我们的大部分代码库没有被单元测试覆盖。除了“单元测试的文件的单元测试覆盖率是多少”之外,一个有趣的指标是“单元测试覆盖了我们整个代码库的多少”,其中包括当前未进行单元测试的那些文件。使用 gcov,您需要实际编译和链接给定的源文件,然后执行生成的程序以获取该文件可能的覆盖率数据。
为了开发这个“代码库”覆盖率指标,我编写了一些 Python 脚本来利用 MSquared 的 RSM(我们已经在我们的开发服务器上拥有它)来评估代码,然后将该数据与 gcov 返回的覆盖率数据配对。它工作得相当好,但在比较 RSM 和 gcov 评估的文件的语句和分支等内容时,存在足够显着的差异,我对此作为最终解决方案并不满意。
以下是我的问题:
- 有没有其他人试图按照这些思路做一些事情?
- 有没有更好的方法来解决它?
- 是否有任何工具(最好是免费/开源)可以评估类似于 gcov 的代码并且可用于执行这种基于覆盖率的静态分析?
谢谢你。
c - 我们可以使用 gcov 在 C/C++ 源文件中找到可执行的代码行吗
gcov 主要是一个代码覆盖工具。但是,有什么方法可以用 gcov 找到 LOC(不包括评论等)?
gcov 获取该信息一定很容易,但我没有找到任何相关文档。
另外,如果您知道任何其他可以以这种方式计算代码行的工具,请告诉我。