如何配置 PyCharm 的覆盖率检查器来识别 .coveragerc?

How do I configure PyCharm's Coverage checker to recognize .coveragerc?

我的项目根目录中有一个 .coveragerc 文件。它告诉 coverage.py 省略我项目的迁移目录:

[run]
omit = *migrations*

当我在命令行 运行 coverage.py 时,会遵守我放入 .coveragerc 的配置。

但是,PyCharm不认识。是否有我缺少的设置?

如果事实证明 PyCharm 无法识别 .coveragerc,我会很高兴能够忽略这些目录。

https://youtrack.jetbrains.com/issue/PY-16945

有一个功能请求

我发现自己非常需要这个。我的 travis 运行 运行 正确,工作服也正确,但我无法在 PyCharm 中正常工作。

这个东西有点hacky,但希望它能帮助人们:

在我的根项目目录中,我得到了一个.coveragerc

[run]
omit = ./venv
concurrency = multiprocessing
parallel = True
source = HookTest
data_file = .cache/.coverage

而我 "hacked" PyCharm 的一点点 run_coverage.py : (pycharm-2016.3.2/helpers/coverage_runner/run_coverage.py )

开始于

argv = []

将所有内容替换为:

argv = []
for arg in sys.argv:
    if arg.startswith('-m') and arg[2:]:
        argv.append(arg[2:])
    else:
        argv.append(arg)

cwd = os.getcwd()

rcfile = cwd + "/.coveragerc"
if os.path.exists(rcfile):
    print("Loading rcfile")
    i = argv.index("run")+1
    argv = argv[:i] + ["--rcfile={}".format(rcfile)] + argv[i:]

sys.argv = argv

try:
    main()
finally:
    if run_cov:
        os.chdir(cwd)
        if os.getenv('COVERAGE_COMBINE'):
            main(["combine"])
        main(["xml", "-o", coverage_file + ".xml", "--ignore-errors"])

为了使这个 运行 与 python setup.py 测试,我在 PyCharm 中创建了一个脚本,该脚本使用了 setup.py,测试有参数,和 COVERAGE_COMBINE 作为全局环境。它可能不是有史以来最好的解决方案,但至少它允许我在本地工作时不再使用 HTML 输出:)

有一种不同的方法可以让 PyCharm 忽略某些文件和文件夹:

Settings 中选择 Project: ... - Project Structure。您可以在此处将文件夹标记为 Excluded 或专门排除文件。

PyCharm 的代码覆盖率报告也忽略了所有那些被排除的文件。

您可以 PyCharm 使用 .coveragerc,方法是将其放入您 运行 测试的工作目录。

来自 https://youtrack.jetbrains.com/issue/PY-16945 的功能请求已在版本 2018.1 中实现并运行。

上次Pycharm版本2018.3.4不支持。 我成功使其工作的唯一方法是将 run_coverage.py 作为@PonteIneptique

这是我必须做的唯一修改:

run_xml = os.getenv('PYCHARM_RUN_COVERAGE_XML')
argv = ["xml", "-o", coverage_file + ".xml", "--ignore-errors"]
rcfile = cwd + "/.coveragerc"
if os.path.exists(rcfile):
    print("Loading rcfile\n")
    argv += ["--rcfile", rcfile]


if run_xml:
    os.chdir(cwd)
    main(argv)
else:
    try:
        main()
    finally:
        if run_cov:
            os.chdir(cwd)
            main(argv)

请务必在您的配置中也设置 .coveragerc 文件的工作目录。 Pycharm 编码人员应更新他们的代码以从 GUI 支持此 .coveragerc 文件。