예외 제어
Python 파일에서 가입되지 않은 예외에 대한 제한된 정적 분석을 수행하십시오.
이것은 a입니다 켈 물티 켈 . 테스트 된 행동, 테스트되지 않은 행동 및 한계를 확인하십시오.
용법
Python 파일에서 가게되지 않은 예외를 확인하려면 :
python3 main.py [filename]
여러 파일 지원이 제한되어 있지만이를 시도 할 수 있습니다.
python3 main.py <(cat [file1] [file2]...)
테스트 된 행동
포함 된 테스트 파일 테스트/test.py 및 tests/test2.py에 대해 다음 동작이 확인되었습니다.
- 함수에 의해 수동으로 제기되는 예외를 감지합니다 (
raise Exception ). - 예외를 제기하는 사용자 정의 함수와
open() 과 같은 내장 된 Python 함수를 포함하여 기능을 시도하는 기능을 호출하여 제외되는 예외를 감지합니다. - INdexing
arr[index] 와 같은 연산자를 사용하여 발생하는 예외를 감지하고 a / b 또는 a // b 나누십시오. -
except Exception: 보고서의 조항을 제외하고 예외 계층을 이해합니다. - 보고서의 기능 문서에 문서화 된 예외는 제외됩니다.
테스트되지 않은 행동
- 중첩 시도/블록을 제외하고 실패 할 수 있습니다.
- 추가 제한을 감지하려면보다 광범위한 테스트를 수행해야합니다.
제한
- 많은 예외를 놓칠 것입니다.
- 파이썬은 오리 타이핑의 동적 언어이기 때문에 정적으로 감지 할 수없는 많은 예외가 있습니다.
- 가장 인기있는 기능에 의해 제기 된 예외는 문서화되지 않으므로 외부에서는 보이지 않습니다.
- 예외는 이름별로 저장됩니다. 함수에 여러 타입
TypeError 있는 경우 마지막 유형 만보고됩니다.
- 실행 중에도 제기되지 않더라도 예외를보고합니다.
- 정적 분석 도구이기 때문에 코드를 따라 변수를 따르거나 가능한 값을 결정하지 않습니다.
- 그렇기 때문에 "안전한"이든 아니든 인덱싱 또는 디비전 작업에 대해 예외가보고됩니다.
- 클래스 나 사용자 정의 예외와 잘 작동하지 않습니다.
- 단일 문서에는 동일한 이름을 공유하는 다른 클래스의 메소드가있는 많은 클래스가있을 수 있습니다.
- 수업을 인스턴스화하고 그 방법을 호출하는 방법에는 여러 가지가 있습니다.
- 경우에 따라 변수의 클래스와 정적 분석을 사용하여 불리는 함수를 결정하는 것은 불가능합니다.
- 외부 라이브러리를 지원하지 않습니다.
- 외부 라이브러리는 지원되지 않지만 코드는 향후에 포함시킬 수있을 정도로 확장 가능합니다.
- 여러 파일에 대한 지원은 다음과 같습니다.
- 여러 파일에 대한 지원은 BASH 프로세스 대체를 통해 수행됩니다.
python3 main.py <(cat [file1] [file2]...) - 줄 번호는 파일 당이 아닌 병합 된 파일과 관련이 있습니다.
- 함수는 이름별로 검색되므로
from <module> import <function> as <new_name> 감지되지 않습니다.