2010-01-22 7 views
9
#!/usr/bin/python 
str = "this" 
if(1): 
    print "Hi" 
else: 
    print str.any_random_function() 

프로그램을 실행해도이 작업은 실패하지 않습니다. py_compile 시도했지만 'else'루프 중 하나를 오류를 나타내지 않았다. 이제 어떻게 프로그램을 컴파일하고 python 코드에서 오류를 안정적으로 감지 할 수 있습니까?파이썬에서 컴파일 오류를 어떻게 확인할 수 있습니까?

감사합니다.

+4

파이썬에서는 그렇게 할 수 없다고 생각합니다. 메소드는 동적으로 추가 될 수 있으며, 예외가 캡처되거나 __getattr__ 메소드가 오버로드 될 수 있습니다. 이러한 경우, 오류는 전적으로 런타임 정보 또는 런타임 환경에 달려 있습니다. – fserb

+0

실제로,이 특별한 예는 pylint에 잡힐 것입니다. – Geo

+1

잘못된 것이 아니기 때문에 실패하지 않습니다. 여러분의 모듈은'any_random_function'이 내장 문자열 클래스에 대해 올바르게 정의 된 컨텍스트에서 가져올 수 있습니다. –

답변

2

파이썬은 동적 언어이므로 정적 언어 (C/C++/Java)와 같은 컴파일 오류를 단순히 확인할 수 없습니다. str.any_random_function을 할당하면 위의 코드가 올바른 것입니다 (잘못된 예입니다 ...).

누락 된 기능/모듈 등의 일반적인 문제를 자동으로 발견하는 PyDev for Eclipse을 사용하는 것이 좋습니다. 또한 pylint (선택 사항)을 지원합니다.

+0

임의의 키 저장소가 함수 호출에 문자를 추가하는 것은 쉽습니다. 그래서 전체 코드베이스를 통해 pylint를 실행하거나 잘못된 함수 호출을 잡기 위해 단위 테스트와 100 % 코드 커버 리지를 갖는 것이 좋습니다. 답장을 보내 주셔서 감사합니다. – stacka

+0

pylint에 익숙해지는 데 약간의 시간이 걸리며 제대로 구성되지 않으면 많은 (쓸데없는) 메시지가 생성 될 수 있습니다. 어쨌든 훌륭한 소프트웨어 엔지니어는 단위 테스트를 사용하여 항상 100 % 코드 범위를 목표로해야합니다. 이점은 자동으로 실행될 수 있다는 것입니다 (반자동) - 필림 메시지는 사람이 해석해야합니다. – AndiDog

+0

단위 테스트도 강력히 권합니다. –

관련 문제