使用coverage生成覆盖率报告出现(builtin)无源代码错误如何忽略
报错原因
No source for code: '/home/zz/work/cnn/tests/(builtin)' 报错是因为两次
coverage run指定了不同的源码目录,合并数据后coverage会尝试匹配所有执行过的代码的源文件,其中Python内置模块没有对应的本地源码文件,就会触发该错误。
解决方案
方法1:临时命令行参数(单次生效)
直接在report命令后添加-i(--ignore-errors的缩写)忽略源文件找不到的错误即可:
coverage report -m --skip-empty -i
如果需要生成HTML格式的覆盖率报告,同理添加参数即可:
coverage html -i
方法2:配置文件永久生效
不用每次手动加参数,在项目根目录新建对应配置文件即可:
用.coveragerc配置(最常用)
[run] # 统一指定要统计覆盖率的源码目录,避免额外扫描内置/第三方代码 source = HelloCNN1 HelloCNN2 [report] # 自动忽略源文件找不到的错误 ignore_errors = True # 保留你原来的跳过空文件配置 skip_empty = True
配置完成后直接执行原来的命令即可,不需要加额外参数:
coverage run test_hellocnn1.py coverage run test_hellocnn2.py coverage combine coverage report -m
用pyproject.toml配置
如果你的项目用pyproject.toml管理配置,添加以下内容:
[tool.coverage.run] source = ["HelloCNN1", "HelloCNN2"] [tool.coverage.report] ignore_errors = true skip_empty = true
内容的提问来源于stack exchange,提问作者ChrisZZ
相关产品推荐
相关产品推荐

