Static Checker for Python: PyChecker

Posted 2006. 10. 8. 11:48
파이썬을 위한 정적 검사(static analysis) 도구를 찾아 보다 PyChecker 프로젝트를 발견했다. PyChecker는 C의 lint와 유사한 프로그램으로 파이썬 프로그램을 읽어서 실행 전에 다음 오류들을 알려준다.

- 사용된 전역 변수가 정의되지 않았을 때. (예를 들어 import 없이 모듈을 사용)
- 함수/메쏘드/생성자에 넘기는 인자 수가 맞지 않을 때.
- 내부(builtin) 함수/메쏘드에 넘기는 인자 수가 맞지 않을 때.

- 포맷 문자열과 인자가 맞지 않을 때.

- 존재하지 않는 메쏘드나 속성(attribute)을 사용했을 때.

- 메쏘드를 오버라이드할 때 시그너처를 바꾼 경우.

- 같은 스코프에서 함수/클래스/메쏘드를 재정의했을 때.

- 변수를 초기화 없이 사용했을 때.

- 메쏘드의 첫 번째 인자가 self가 아닐 때.

- 사용되지 않은 전역 변수와 지역 변수.

- 사용되지 않은 함수/메쏘드 인자.

- 모듈, 클래스, 함수, 메쏘드에 doc이 없을 때.


사실 이 정도 검사는 별도의 어노테이션 없이 가능한데, 왜 파이썬 인터프리트가 직접 지원하지 않는지는 잘 모르겠다. 저런 뻔한 버그 때문에 몇 번이나 코드를 테스트해야 한다는 것은 엄청난 약점일 것 같은데 말이다.

참고 문서
1. Regular Expressions: Syntax Checking the Scripting Way by Cameron Laird and Kathryn Soraiz
http://www.unixreview.com/documents/s=2426/uni1018986621203/0204h.htm