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

如何查找Python脚本执行过程中未被运行的代码行

排查Python脚本单次运行时未执行代码的方案

1. 首选方案:使用coverage.py统计代码覆盖率

这是Python生态中最成熟的代码覆盖率统计工具,完全匹配你需要的「单次运行过程中未执行代码识别+统计」需求:

  • 安装命令:pip install coverage
  • 替代原有启动命令运行你的脚本,执行时自动采集覆盖数据:coverage run your_script.py [脚本的入参]
  • 直接查看命令行统计结果,包含每个文件的未执行行号列表、覆盖率占比:coverage report -m
  • 如果需要可视化的标记结果,可生成网页版报告:执行coverage html后打开生成的htmlcov/index.html,所有执行过的代码、未执行的代码会用不同颜色高亮显示,未执行行号直接标注在对应行旁。

这个方案的统计完全基于本次运行的实际执行路径,不会受静态检测误判的影响,动态调用的函数只要被执行就会被正常统计,未被调用的函数内部所有代码行都会被标记为未执行,比IDE的静态未使用变量检测准确度高很多。

2. 无第三方依赖的轻量实现方案

如果运行环境无法安装额外第三方库,可以直接用Python标准库的sys.settrace接口自定义实现行覆盖统计,示例代码如下:

import sys
import inspect

# 配置你要统计的目标脚本绝对路径,避免统计到标准库、第三方库代码
TARGET_SCRIPT_PATH = "/path/to/your_script.py"
executed_lines = set()

def trace_handler(frame, event, arg):
    if event == "line":
        frame_info = inspect.getframeinfo(frame)
        if frame_info.filename == TARGET_SCRIPT_PATH:
            executed_lines.add(frame.f_lineno)
    return trace_handler

# 开启trace
sys.settrace(trace_handler)

# 运行你的目标脚本,和原有执行逻辑一致即可
import your_script

# 关闭trace
sys.settrace(None)

# 统计目标脚本的所有有效代码行(排除空行、注释行)
with open(TARGET_SCRIPT_PATH, "r", encoding="utf-8") as f:
    all_valid_lines = []
    for line_num, line_content in enumerate(f.readlines(), start=1):
        stripped = line_content.strip()
        if stripped and not stripped.startswith("#"):
            all_valid_lines.append(line_num)

# 计算未执行的行
unused_lines = sorted(set(all_valid_lines) - executed_lines)

# 输出统计结果
print(f"=== 代码覆盖统计结果 ===")
print(f"总有效代码行数:{len(all_valid_lines)}")
print(f"本次运行执行行数:{len(executed_lines)}")
print(f"未执行行数:{len(unused_lines)}")
print(f"代码覆盖率:{(len(executed_lines)/len(all_valid_lines))*100:.2f}%")
print(f"未执行行号列表:{unused_lines}")

这个方案可以根据你的需求自定义过滤规则,比如排除特定函数、特定目录的统计,灵活度更高,适合特殊场景使用。

注意事项

如果你的脚本涉及多进程、多线程运行,coverage.py原生支持这类场景的覆盖率统计,只需要在运行时添加对应配置即可,无需修改业务代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 10:45:05