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

时间:2017-12-12 09:48:15

标签: python pylint sniffer

我正在使用Pylint和Nose以及sniffer来lint并在每次保存时测试我的python应用程序。如果你不知道https://pypi.python.org/pypi/sniffer

,这就是嗅探器

这是runnable负责从嗅探器 scent.py 文件运行nosetests和pylint

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()在我的应用上运行pylint。然后使用call()

在应用上执行nosetest

问题是,在保存文件后,nosetests在文件的更新版本上运行,但是Pylint使用相同的旧版本。我必须每次重启sniffer以获取pylint以获取新版本的文件。

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

我的pylintrc文件与生成命令pylint --generate-rcfile > .pylintrc几乎完全相同,但有一些针对特定应用程序的调整。

1 个答案:

答案 0 :(得分:0)

正如@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