我正在使用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()
问题是,在保存文件后,nosetests在文件的更新版本上运行,但是Pylint使用相同的旧版本。我必须每次重启sniffer以获取pylint以获取新版本的文件。
我认为这不是嗅探器配置的问题,因为nosetests每次都能获得新版本的文件。我仍然不确定。
我的pylintrc文件与生成命令pylint --generate-rcfile > .pylintrc
几乎完全相同,但有一些针对特定应用程序的调整。
答案 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