coverage.py 给出 "No source for code",尽管 .coveragerc 似乎告诉它代码在哪里

coverage.py gives "No source for code", despite .coveragerc seemingly telling it where the code is

如果我在 docker 容器中调用 python3 -m coverage 运行 ...,我会根据需要得到一个 .coverage 文件。

但是,如果我尝试使用容器外部的 .coverage 文件生成 html 或文本报告,我会得到:

No source for code: '/opt/anomaly/backplane/__init__.py'.
Aborting report output, consider using -i.

./backplane/__init__.py存在,我在同一目录下有以下.coveragerc

[paths]
source =
    ./
    /opt/anomaly/.

似乎 coverage.py 不知道 ./opt/anomaly 应该被认为是同一件事,尽管 .coveragerc 文件旨在告诉 coverage.py 他们是。

我用谷歌搜索了很多,但一无所获。

我还在容器内生成了报告,效果很好。但我真的更愿意在容器外生成它们。


更新: Ned 提供了有用的信息,只有 coverage combine.coveragerc.

中使用了 [paths]

这是我目前面临的问题:

+ ./bin/terminate-api
+ sleep 2
+ lses
+ ls -l .coverage .api-coverage
ls: cannot access '.coverage': No such file or directory
-rw-rw-r-- 1 root root 13358 Jul 22 14:15 .api-coverage
+ python3 -m coverage combine .api-coverage
+ lses
+ ls -l .coverage .api-coverage
ls: cannot access '.api-coverage': No such file or directory
-rw-r--r-- 1 dstromberg dstromberg 13358 Jul 22 14:15 .coverage
+ python3 -m coverage html
No source for code: '/opt/anomaly/backplane/__init__.py'.
Aborting report output, consider using -i.

顺便说一句,我现在尝试在 .coveragerc 中使用相对路径,也在 .coveragerc 中使用绝对路径。目前两者都不适合我。

请注意,.api-coverage 和 .coverage 具有相同的长度 - 我认为 .coverage 应该具有不同的长度,因为路径已更改。相对路径,.coverage要小一些,绝对路径,.coverage要大一些

顺便说一句,我正在使用:

$ python3 -m coverage --version
below cmd output started 2019 Mon Jul 22 02:33:02 PM PDT
Coverage.py, version 4.5.3 with C extension
Documentation at https://coverage.readthedocs.io

谢谢!

运行 可执行文件 .coverage 需要运行时环境,在您的情况下,可以在容器而不是主机内提供。

这与删除尾随 / 相结合。来自我的 .coveragerc 的 /opt/anomaly/。路径似乎已经解决了问题。