colcon收集测试结果的扩展。

colcon-lcov-result的Python项目详细描述


Colcon LCov结果

colcon-core提供聚合的扩展 使用LCOV覆盖率结果。

lcov是gcc覆盖测试工具的图形前端 gcov,生成以下内容 覆盖率指标:

  • 报表覆盖率
  • 功能覆盖范围
  • 分行覆盖率

有关详细信息,请参见this paper 以及this Wikipedia page

用法

  1. 使用colcon

    $ colcon build \
          --symlink-install \
          --cmake-args \
              -DCMAKE_CXX_FLAGS='-fprofile-arcs -ftest-coverage'\
              -DCMAKE_C_FLAGS='-fprofile-arcs -ftest-coverage'
  2. 为零覆盖率创建基线:

    $ colcon lcov-result --initial
    
    • 此步骤是可选的,但有助于显示未被 测试
  3. 运行测试:

    $ colcon test
  4. 收集lcov结果:

    $ colcon lcov-result
    Reading tracefile /home/user/workspace/my_cool_ws/lcov/total_coverage.info
    Summary coverage rate:
      lines......: 78.6% (44 of 56 lines)
      functions..: 94.4% (34 of 36 functions)
      branches...: 37.0% (34 of 92 branches)
  5. 通过在浏览器中打开lcov/index.html来浏览覆盖率报告

  6. 将覆盖计数器归零并重新运行测试:

    $ colcon lcov-result --zero-counters
    $ colcon lcov-result --initial
    $ colcon test
    $ colcon lcov-result
    Reading tracefile /home/user/workspace/my_cool_ws/lcov/total_coverage.info
    Summary coverage rate:
      lines......: 78.6% (44 of 56 lines)
      functions..: 94.4% (34 of 36 functions)
      branches...: 37.0% (34 of 92 branches)

提示和技巧

  • 在本地运行时,使用--packages-select选项生成 相关套餐的覆盖信息
    • 这还将禁止对未生成的包发出警告 具有覆盖标志或测试未运行的
  • --verbose标记可用于打印每个 分析结果时的单个包装

故障排除

  • 运行colcon lcov-result--initial时出现以下警告意味着 包不是用正确的标志生成的:

    --- stderr: my_pkg
    geninfo: WARNING: no .gcno files found in /home/user/workspace/build/my_pkg - skipping!
    ---
    
    • 这个包不会出现在最终结果中。使用--packages-skip抑制 警告
  • 运行colcon lcov-result时出现以下警告意味着没有测试 为那个包裹跑步

    [0.576s] ERROR:colcon.colcon_lcov_result.task.lcov:lcov:
    ERROR: no valid records found in tracefile /home/user/workspace/build/my_pkg/coverage.info
    --- stderr: my_pkg
    geninfo: WARNING: no .gcda files found in /home/user/workspace/build/my_pkg - skipping!
    ---
    
    • 该包将显示在最终结果中,覆盖率为0%。使用--packages-skip 从总数中抑制这些包

已知问题

  1. 聚合所有结果文件的最后一步可能会很慢,具体取决于 关于分析的包数

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
带Maven的Eclipse Java存储库:缺少工件:compile   java如何以编程方式停止RMI服务器并通知所有客户端   java Roboguice抛出ClassNotFoundException:AnnotationDatabaseImpl   java为什么lucene 4.0删除IndexWriter类的两个构造函数?   nls如何避免java项目上不需要的日志消息?   测试无法在Selenium Webdriver(java)中定位iframe   使用XML的java servlet   java如何使用jxl用****屏蔽单元格   java使用SQLite从数据库中选择“没有这样的列”   导入扫描程序后出现java编译错误   插入查询的java空指针异常   使用创建PostgreSQL数据库。Java应用中的sql脚本   java使用jsoup将HTML解析为格式化的明文