带嗅探器的 Pylint 不使用更新的源文件

Pylint with sniffer not using updated source files

我正在使用 Pylint 和 Nose 以及嗅探器在每次保存时检查和测试我的 python 应用程序。这是嗅探器,以防你不知道 https://pypi.python.org/pypi/sniffer

这里是 运行nable 负责 运行ning nosetests 和 pylint 来自 scent.py 文件的嗅探器

from sniffer.api import * # import the really small API
from pylint import lint
from subprocess import call
import os
import nose

@runnable
def zimmer_tests(*args):
    command = "nosetests some_module/test --nologcapture --with-coverage --cover-config-file=zimmer_coverage_config"

    lint.Run(['some_module/app'], exit=False)
    return call(command, shell=True) == 0

在这里,我的应用程序上的第一个 lint.Run() 运行s pylint。然后使用 call()

在应用程序上执行 nosetest

问题是,在我将文件 nosetests 运行 保存在文件的更新版本上之后,但是 Pylint 使用相同的旧版本。我每次都必须重新启动嗅探器才能让 pylint 获取新版本的文件。

我认为这不是嗅探器配置的问题,因为 nosetests 每次都能获得新版本的文件。我还是不确定。

我的 pylintrc 文件与我们从 generate 命令 pylint --generate-rcfile > .pylintrc 获得的文件几乎相同,只是做了一些特定于应用程序的小调整。

正如@KlausD 所指出的。在评论中,lint.Run() 正在使用缓存中的文件,因为它是从静止的 运行 进程中调用的。从命令行调用 pylint 按预期工作。

这里是修改后的代码

@runnable
def zimmer_tests(*args):
    command_nose = "nosetests some_module/test --nologcapture --with-coverage --cover-config-file=zimmer_coverage_config"
    command_lint = "pylint some_module"
    call(command_lint, shell=True)
    return call(command_nose, shell=True) == 0