[CI]Coverage test覆盖率不符合预期
bug描述 Describe the Bug
一、背景 https://github.com/PaddlePaddle/Paddle/issues/76333 NO.6 paddle.nn.MaxPool2D兼容性增强 详细描述: 新增dilation参数,支持空洞池化,新增新增Kernel。(包括CPU/GPU/XPU) PR 二、问题描述 Coverage test报错,显示覆盖率仅为3.8%
paddle/phi/kernels/impl/pool_grad_kernel_impl.h 等文件 100% miss。
但是本地单测和 CI/Linux-CPU 等能跑通,证明起码代码主体能覆盖到才对,覆盖率不至于这么低,更不可能出现单个文件 100% miss 的情况。
其他补充信息 Additional Supplementary Information
No response
@XieYunshen 研发大大,这个问题是要请教您吗,CI 报错日志里面提到了您的id
覆盖率CI 跑的是 GPU 的单测,本地可以打 log 观察下修改的代码单测是否有跑到,如果确实没跑到可以增加相关单测
覆盖率CI 跑的是 GPU 的单测,本地可以打 log 观察下修改的代码单测是否有跑到,如果确实没跑到可以增加相关单测
研发大大,本地单测也会跑 GPU 的单测的,可以通过。现在的问题不是部分代码未覆盖,而是按照 ci 的报错信息,几乎全部的新增代码都未覆盖,如果真这样,所有单测都不能通过的。
杨同学告诉我覆盖率 CI 跑的是 CPU 的单测,实测也是如此。 补充完 CPU 端单测后,还是有几点问题,麻烦老师再看一下。
- paddle/fluid/pir/dialect/operator/interface/infer_symbolic_shape/backward_infer_sym.cc 根据 https://github.com/PaddlePaddle/Paddle/blob/develop/test/legacy_test/op_test.py#L2941 这个文件,单测只能测试正向的 infer_symbol ,反向本来就是测试不到的。
- paddle/fluid/pir/dialect/operator/interface/infer_symbolic_shape/unary_infer_sym.cc paddle/phi/kernels/impl/pool_kernel_impl.h paddle/phi/kernels/impl/pool_grad_kernel_impl.h paddle/phi/kernels/funcs/pooling.cc 本地打 LOG 显示可以覆盖到。
- python/paddle/nn/functional/pooling.py 覆盖率 CI 静态图测试是不是有问题,https://app.codecov.io/gh/PaddlePaddle/Paddle/commit/351773b70162cdfbca961df3c807917e655aeae0/blob/python/paddle/nn/functional/pooling.py#L689 ,681-688、727-731 能覆盖,689-726 全不能覆盖,这太奇怪了。
- paddle/fluid/pir/dialect/operator/interface/infer_symbolic_shape/backward_infer_sym.cc 根据 https://github.com/PaddlePaddle/Paddle/blob/develop/test/legacy_test/op_test.py#L2941 这个文件,单测只能测试正向的 infer_symbol ,反向本来就是测试不到的。
- paddle/fluid/pir/dialect/operator/interface/infer_symbolic_shape/unary_infer_sym.cc paddle/phi/kernels/impl/pool_kernel_impl.h paddle/phi/kernels/impl/pool_grad_kernel_impl.h paddle/phi/kernels/funcs/pooling.cc 本地打 LOG 显示可以覆盖到。
- python/paddle/nn/functional/pooling.py 覆盖率 CI 静态图测试是不是有问题,https://app.codecov.io/gh/PaddlePaddle/Paddle/commit/351773b70162cdfbca961df3c807917e655aeae0/blob/python/paddle/nn/functional/pooling.py#L689 ,681-688、727-731 能覆盖,689-726 全不能覆盖,这太奇怪了。
可以提供一下 https://app.codecov.io/gh/PaddlePaddle/Paddle/pull/76714/tree 没覆盖到的位置本地 log 截图嘛,CI 的覆盖率可能会不准,感谢感谢
@ooooo-create 您看一下
覆盖率 CI 静态图测试是不是有问题,https://app.codecov.io/gh/PaddlePaddle/Paddle/commit/351773b70162cdfbca961df3c807917e655aeae0/blob/python/paddle/nn/functional/pooling.py#L689 ,681-688、727-731 能覆盖,689-726 全不能覆盖,这太奇怪了。
这个是旧静态图,本来就是测试不到的,不用管的
https://productionresultssa14.blob.core.windows.net/actions-results/75958177-f081-4ff2-88c7-78dfef22dc2c/workflow-job-run-76238548-febc-5c0a-9eeb-7babf0cdee57/logs/job/job-logs.txt?rsct=text%2Fplain&se=2025-12-12T09%3A40%3A52Z&sig=8b09y8gf26d8htBkeLi%2Bu0Lj97xEDmVHUmLEAKv43Ro%3D&ske=2025-12-12T19%3A52%3A39Z&skoid=ca7593d4-ee42-46cd-af88-8b886a2f84eb&sks=b&skt=2025-12-12T07%3A52%3A39Z&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skv=2025-11-05&sp=r&spr=https&sr=b&st=2025-12-12T09%3A30%3A47Z&sv=2025-11-05 CI中没有跑test_pool_max_op这个测试
https://productionresultssa14.blob.core.windows.net/actions-results/75958177-f081-4ff2-88c7-78dfef22dc2c/workflow-job-run-76238548-febc-5c0a-9eeb-7babf0cdee57/logs/job/job-logs.txt?rsct=text%2Fplain&se=2025-12-12T09%3A40%3A52Z&sig=8b09y8gf26d8htBkeLi%2Bu0Lj97xEDmVHUmLEAKv43Ro%3D&ske=2025-12-12T19%3A52%3A39Z&skoid=ca7593d4-ee42-46cd-af88-8b886a2f84eb&sks=b&skt=2025-12-12T07%3A52%3A39Z&sktid=398a6654-997b-47e9-b12b-9515b896b4de&skv=2025-11-05&sp=r&spr=https&sr=b&st=2025-12-12T09%3A30%3A47Z&sv=2025-11-05 CI中没有跑test_pool_max_op这个测试
对,@WintersMontagne10335 ci 上 test_pool_max_op 被禁用了,按照现在的规则是,我可以给你打开这个单测禁用来跑覆盖率,但是如果单测有问题需要你来修复,需要我打开吗
@ooooo-create 不太想打开,ci coverage能豁免吗? 这个单测原本是禁用的,他是不是有某些不得不禁用的原因(我有点担心,打开之后ci会报奇奇怪怪的错误)?但是按照功能来说,那部分测试代码确实应该放到 test_pool_max_op 里面。 我想的是,本地测试能覆盖到,是不是代表那部分测试算通过了。到时候豁免就行吧。
@ooooo-create 除了 test_pool_max_op 引起的之外,还有另外一部分代码 ci 显示没覆盖,本地可以覆盖到的。
@ooooo-create test_pool_max_op 已经打开了,没有出现 bug,覆盖率依旧不符合预期,问题和之前相同。 还是之前那些点,本地 log 截图已经发过了。 PR:https://github.com/PaddlePaddle/Paddle/pull/76714
- paddle/fluid/pir/dialect/operator/interface/infer_symbolic_shape/backward_infer_sym.cc 根据 https://github.com/PaddlePaddle/Paddle/blob/develop/test/legacy_test/op_test.py#L2941 这个文件,单测只能测试正向的 infer_symbol ,反向本来就是测试不到的。
- paddle/fluid/pir/dialect/operator/interface/infer_symbolic_shape/unary_infer_sym.cc paddle/phi/kernels/impl/pool_kernel_impl.h paddle/phi/kernels/impl/pool_grad_kernel_impl.h paddle/phi/kernels/funcs/pooling.cc 本地打 LOG 显示可以覆盖到。
- python/paddle/nn/functional/pooling.py 覆盖率 CI 静态图测试是不是有问题,https://app.codecov.io/gh/PaddlePaddle/Paddle/commit/351773b70162cdfbca961df3c807917e655aeae0/blob/python/paddle/nn/functional/pooling.py#L689 ,681-688、727-731 能覆盖,689-726 全不能覆盖,这太奇怪了。
@ooooo-create test_pool_max_op 已经打开了,没有出现 bug,覆盖率依旧不符合预期,问题和之前相同。
这个是在内部 bos 上禁用的,所以上次问你需不需要打开,因为直接打开可能会阻塞别人的 pr,上次回复不太想打开,我就没打开,那我现在打开可以吗?有没有在 coverage 跑,你可以在coverge test 日志上搜 test_pool_max_op 判断
现在禁用已打开,重新跑一下流水线叭
@ooooo-create test_pool_max_op 已经打开了,没有出现 bug,覆盖率依旧不符合预期,问题和之前相同。
这个是在内部 bos 上禁用的,所以上次问你需不需要打开,因为直接打开可能会阻塞别人的 pr,上次回复不太想打开,我就没打开,那我现在打开可以吗?有没有在 coverage 跑,你可以在coverge test 日志上搜 test_pool_max_op 判断
我还以为修改 cmakelists 就可以了hh(周末尝试了下),okok我看下
@ooooo-create ci 运行完了现在是80%,您再看一下。
unary_infer_sym.cc 本地打log能覆盖到,截图就在上边。 backward_infer_sym.cc据根据 https://github.com/PaddlePaddle/Paddle/blob/develop/test/legacy_test/op_test.py#L2941 的设计,好像就没办法覆盖到。 pooling.py这个是旧静态图,本来就是测试不到的,不用管的。
@ooooo-create ci 运行完了现在是80%,您再看一下。
unary_infer_sym.cc 本地打log能覆盖到,截图就在上边。 backward_infer_sym.cc据根据 https://github.com/PaddlePaddle/Paddle/blob/develop/test/legacy_test/op_test.py#L2941 的设计,好像就没办法覆盖到。 pooling.py这个是旧静态图,本来就是测试不到的,不用管的。
好的,现在应该是只剩 unary_infer_sym.cc 的问题,我再看看哈
这个能重新编辑下吗,看不到是什么
@ooooo-create
unary_infer_sym.cc 本地打log能覆盖到,截图就在上边。 backward_infer_sym.cc据根据 https://github.com/PaddlePaddle/Paddle/blob/develop/test/legacy_test/op_test.py#L2941 的设计,好像就没办法覆盖到。 pooling.py这个是旧静态图,本来就是测试不到的,不用管的。
这个能重新编辑下吗,看不到是什么