You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让coverage仅列出未被调用的函数?兼容pytest更佳

如何让coverage工具仅列出未被调用的函数(用于清理死代码)

要实现仅输出从未被调用的函数,可通过coverage的结构化数据导出功能配合简单脚本实现,同时兼容pytest,具体步骤如下:

1. 收集代码覆盖数据

直接运行目标代码

coverage run test.py

兼容pytest的方式

用coverage包裹pytest执行,自动收集测试过程中的代码覆盖数据:

coverage run -m pytest your_test_suite.py

2. 导出结构化覆盖数据

使用coverage json命令将覆盖统计结果导出为JSON格式,便于后续解析:

coverage json

执行后会生成coverage.json文件,包含所有函数的执行状态信息。

3. 编写脚本过滤未被调用的函数

创建一个简单的Python脚本(比如find_dead_functions.py),解析JSON文件并提取未执行的函数:

import json

with open('coverage.json', 'r') as f:
    coverage_data = json.load(f)

for file_path, file_info in coverage_data['files'].items():
    # 遍历文件中的所有函数
    for func_details in file_info['functions']:
        # 判断函数是否从未被执行
        if func_details['executed'] == 0:
            # 提取文件名(不含后缀)和函数名
            file_name = file_path.split('.')[0]
            func_name = func_details['name'].split('.')[-1]
            print(f"{file_name}.{func_name} - not called")

运行脚本即可得到目标输出:

python find_dead_functions.py

输出示例:

test.c - not called

可选:快速命令行过滤(适合临时需求)

若不想编写脚本,可使用coverage report结合命令行工具过滤,但准确性略低(可能包含未执行的代码行而非仅函数):

coverage report --show-missing --include="test.py" | grep -E "^\s+0\s+"

内容的提问来源于stack exchange,提问作者JL Peyret

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 10:46:17