2017-12-12 3 views
0

스니퍼와 함께 Pylint와 Nose를 사용하여 모든 저장시 내 파이썬 응용 프로그램을 테스트합니다. 이것은 당신이 여기 https://pypi.python.org/pypi/sniffer업데이트 된 소스 파일을 사용하지 않는 스니퍼가있는 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에 대한 scent.py 파일에서 nosetests 및 pylint을 실행하기위한 실행 가능한 책임을인지하지 못하는 경우 스니퍼입니다. 그런 다음 nosetest가 응용 프로그램에서 실행됩니다 call()

문제는 내가 파일을 저장 한 후 nosetests는 파일의 업데이트 된 버전에서 실행되지만 Pylint는 동일한 이전 버전을 사용합니다. 필립 (pylint)이 파일의 새 버전을 구할 때마다 스니퍼를 다시 시작해야합니다.

nosetests가 매번 새로운 버전의 파일을 가져올 수 있기 때문에 스니퍼의 구성에 문제가 없다고 가정합니다. 여전히 확실하지 않습니다.

내 pylintrc 파일은 생성 명령 pylint --generate-rcfile > .pylintrc에서 일부 응용 프로그램 별 개조와 거의 같습니다.

+1

입니다. 가져온 항목이 있으면 두 번째 가져 오기에서 캐시되므로 캐시에서 가져옵니다. 반면에 노드는 자신의 프로세스로 시작할 때마다 빈 모듈 캐시로 시작됩니다. 커맨드 라인으로도 pylint를 시작할 수 있습니다. –

+0

@KlausD. 고마워요! 커맨드 라인에서 직접 호출하는 것이 효과적입니다! – penguin2048

답변

0

@KlausD가 지적한대로 주석에서 lint.Run()은 여전히 ​​실행중인 프로세스에서 호출 될 때 캐시의 파일을 사용하고있었습니다. 명령 줄에서 pylint를 호출하면 예상대로 작동했습니다. 여기

당신은 여전히 ​​실행중인 프로세스에 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 
관련 문제