Jedi는 일반적으로 IDE/편집기 플러그인에서 사용되는 Python용 정적 분석 도구입니다. Jedi는 자동 완성 및 goto 기능에 중점을 둡니다. 다른 기능으로는 리팩토링, 코드 검색, 참조 찾기 등이 있습니다.
Jedi에는 작업할 수 있는 간단한 API가 있습니다. VIM 플러그인으로 참조 구현이 있습니다. REPL의 자동 완성도 가능하며, IPython은 이를 기본적으로 사용하고 CPython REPL의 경우 설치할 수 있습니다. Jedi는 잘 테스트되었으며 버그는 거의 없습니다.
Jedi는 현재 다음 편집자/프로젝트와 함께 사용할 수 있습니다:
그리고 더 많은 것!
Jedi를 사용하는 몇 가지 언어 서버가 있습니다:
다음은 jedi-vim에서 가져온 일부 사진입니다.
거의 모든 작업 완료:
선적 서류 비치:
github에서 최신 버전을 받으세요(마스터 브랜치는 항상 안정적이고 작동 중이어야 합니다).
문서는 https://jedi.readthedocs.org/en/latest/에서 확인할 수 있습니다. 개선 및/또는 수정 사항이 포함된 풀 요청은 훌륭하고 환영받습니다. Jedi는 의미 체계 버전 관리를 사용합니다.
최신 릴리스 정보를 받아보려면 다음 메일링 리스트를 구독 하세요: https://groups.google.com/g/jedi-announce. 구독하려면 [email protected]
으로 빈 이메일을 보내면 됩니다.
이슈 트래커 <https://github.com/davidhalter/jedi/>에 이슈와 질문을 제출할 수 있습니다. 또는 python-jedi
라벨을 사용하여 Stack Overflow에 요청할 수도 있습니다.
문서를 확인해 보세요.
Jedi의 기능은 여기에 나열되어 있습니다: 기능.
Python 3.6 이상에서 Jedi를 실행할 수 있지만 해당 버전보다 오래된 코드도 이해해야 합니다. 또한 Virtualenvs를 매우 잘 사용할 수 있어야 합니다.
Jedi를 효율적으로 사용하는 방법에 대한 팁은 여기에서 확인할 수 있습니다.
여기에서 API에 대한 포괄적인 문서를 찾을 수 있습니다.
다음 명령이 있습니다:
jedi.Script.goto
jedi.Script.infer
jedi.Script.help
jedi.Script.complete
jedi.Script.get_references
jedi.Script.get_signatures
jedi.Script.get_context
반환된 개체는 매우 강력하며 실제로 필요한 전부입니다.
Jedi는 IPython의 종속성입니다. 따라서 추가 구성 없이 Jedi를 사용하여 IPython에서 자동 완성이 가능합니다.
다음은 REPL 완료가 어떻게 보이는지 예시 비디오입니다. python
셸의 경우 REPL에서 탭 완성을 활성화할 수 있습니다.
다양한 형태의 정적 분석을 위해 jedi.Script(...).get_names
사용해 볼 수 있습니다. 필터링하고 작업할 수 있는 이름 목록이 반환됩니다. 파일의 구문 오류를 나열하는 방법도 있습니다: jedi.Script.get_syntax_errors
.
Jedi는 다음 리팩토링을 지원합니다.
jedi.Script.inline
jedi.Script.rename
jedi.Script.extract_function
jedi.Script.extract_variable
jedi.Script.search
통한 모듈 검색과 jedi.Project.search
위한 프로젝트 검색이 지원됩니다. 검색 방법은 foo
와 같은 이름을 제공하거나 foo.bar
와 같은 점 구분 구문을 사용하는 것입니다. 추가적으로 class foo.bar.Bar
와 같은 API 유형을 제공할 수 있습니다. jedi.Script.complete_search
및 jedi.Project.complete_search
함수도 있습니다.
꽤 훌륭하고 광범위한 개발 문서가 있습니다.
테스트 스위트는 pytest
사용합니다:
핍 설치 pytest
특정 Python 버전(예: Python 3.8)만 테스트하려면 다음과 같이 쉽습니다.
python3.8 -m pytest
자세한 내용은 테스트 설명서를 참조하세요.
모든 기여자들에게 정말 감사드립니다!