Jedi 是一種 Python 靜態分析工具,通常用於 IDE/編輯器插件。 Jedi 專注於自動完成和跳轉功能。其他功能包括重構、程式碼搜尋和查找參考。
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/> 中提交問題和疑問。或者,您也可以在 Stack Overflow 上使用標籤python-jedi
進行詢問。
查看文件。
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 的相依性。因此,無需額外配置即可在 IPython 中使用 Jedi 自動完成。
以下是 REPL 完成的範例影片。對於python
shell,您可以在 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
。此外,您還可以提供 API 類型,例如class foo.bar.Bar
。還有函數jedi.Script.complete_search
和jedi.Project.complete_search
。
有一個非常好的和廣泛的開發文件。
測試套件使用pytest
:
pip安裝pytest
如果您只想測試特定的 Python 版本(例如 Python 3.8),則很簡單:
python3.8 -m pytest
有關更多詳細信息,請訪問測試文件。
非常感謝所有貢獻者!