用 Python 打造你的 Eclipse
Eclipse 高階指令碼環境(EASE)專案雖然還在開發中,但是必須要承認它非常強大,它讓我們可以快速打造自己的Eclipse 開發環境。
依據 Eclipse 強大的框架,可以通過其內建的外掛系統全方面的擴充套件 Eclipse。然而,編寫和部署一個新的外掛還是十分麻煩,即使你只是需要一個額外的小功能。不過,現在依託於 EASE,你可以不用寫任何一行 Java 程式碼就可以方便的做到這點。EASE 是一種使用 Python 或者 Javascript 這樣的指令碼語言自動實現這些功能的平臺。
本文中,根據我在今年北美的 EclipseCon 大會上的演講,我將介紹如何用 Python 和 EASE 設定你的 Eclipse 環境,並告訴如何發揮 Python 的能量讓你的 IDE 跑的飛起。
安裝並執行 “Hello World”
本文中的例子使用 Python 的 Java 實現 Jython。你可以將 EASE 直接安裝到你已有的 Eclipse IDE 中。本例中使用Eclipse Mars,並安裝 EASE 環境本身以及它的模組和 Jython 引擎。
使用 Eclipse 安裝對話方塊(Help>Install New Software…),安裝 EASE:http://download.eclipse.org/ease/update/nightly,
選擇下列元件:
- EASE Core feature
- EASE core UI feature
- EASE Python Developer Resources
- EASE modules (Incubation)
這會安裝 EASE 及其模組。這裡我們要注意一下 Resource 模組,此模組可以訪問 Eclipse 工作空間、專案和檔案 API。
成功安裝後,接下來安裝 EASE Jython 引擎 https://dl.bintray.com/pontesegger/ease-jython/ 。完成後,測試下。新建一個專案並新建一個 hello.py 檔案,輸入:
print "hello world"
選中這個檔案,右擊並選擇“Run as -> EASE script”。這樣就可以在控制檯看到“Hello world”的輸出。
現在就可以編寫 Python 指令碼來訪問工作空間和專案了。這種方法可以用於各種定製,下面只是一些思路。
提升你的程式碼質量
管理良好的程式碼質量本身是一件非常煩惱的事情,尤其是當需要處理一個大型程式碼庫或者要許多工程師參與的時候。而這些痛苦可以通過指令碼來減輕,比如批量格式化一些檔案,或者去掉檔案中的 unix 式的行結束符來使得在 git 之類的原始碼控制系統中比較差異更加容易。另外一個更好的用途是使用指令碼來生成 Eclipse markers 以高亮你可以改善的程式碼。這裡有一些示例指令碼,你可以用來在 java 檔案中所有找到的“printStackTrace”方法中加入task markers 。請看原始碼。
拷貝該檔案到工作空間來執行,右擊並選擇“Run as -> EASE script”。
loadModule('/System/Resources') from org.eclipse.core.resources import IMarker for ifile in findFiles("*.java"): file_name = str(ifile.getLocation()) print "Processing " + file_name with open(file_name) as f: for line_no, line in enumerate(f, start=1): if "printStackTrace" in line: marker = ifile.createMarker(IMarker.TASK) marker.setAttribute(IMarker.TRANSIENT, True) marker.setAttribute(IMarker.LINE_NUMBER, line_no) marker.setAttribute(IMarker.MESSAGE, "Fix in Sprint 2: " + line.strip())
如果你的 java 檔案中包含了 printStackTraces,你就可以看見任務檢視和編輯器側邊欄上自動新加的標記。
自動構建繁瑣任務
當同時工作在多個專案的時候,肯定需要完成許多繁雜、重複的任務。可能你需要在所有原始檔頭上加入版權資訊,或者採用新框架時候自動更新檔案。例如,當首次切換到 Tycho 和 Maven 的時候,我們需要 giel每個專案新增 pom.xml 檔案。使用幾行 Python 程式碼可以很輕鬆的完成這個任務。然後當 Tycho 支援無 pom 構建後,我們需要移除不要的 pom 檔案。同樣,幾行程式碼就可以搞定這個任務,例如,這裡有個指令碼可以在每一個開啟的工作空間專案上加入 README.md。請看原始碼 add_readme.py。
拷貝該檔案到工作空間來執行,右擊並選擇“Run as -> EASE script”。
loadModule('/System/Resources') for iproject in getWorkspace().getProjects(): if not iproject.isOpen(): continue ifile = iproject.getFile("README.md") if not ifile.exists(): contents = "# " + iproject.getName() + "/n/n" if iproject.hasNature("org.eclipse.jdt.core.javanature"): contents += "A Java Project/n" elif iproject.hasNature("org.python.pydev.pythonNature"): contents += "A Python Project/n" writeFile(ifile, contents)
指令碼執行的結果會在每個開啟的專案中加入 README.md,java 和 Python 的專案還會自動加上一行描述。
構建新功能
你可以使用 Python 指令碼來快速構建一些急需的功能,或者做個原型給團隊和使用者演示你想要的功能。例如,一個 Eclipse 目前不支援的功能是自動儲存你正在工作的檔案。即使這個功能將會很快提供,但是你現在就可以馬上擁有一個能每隔 30 秒或處於後臺時自動儲存的編輯器。以下是主要方法的片段。請看下列程式碼:autosave.py。
def save_dirty_editors(): workbench = getService(org.eclipse.ui.IWorkbench) for window in workbench.getWorkbenchWindows(): for page in window.getPages(): for editor_ref in page.getEditorReferences(): part = editor_ref.getPart(False) if part and part.isDirty(): print "Auto-Saving", part.getTitle() part.doSave(None)
在執行指令碼之前,你需要勾選 ‘Allow Scripts to run code in UI thread’ 設定,這個設定在 Window > Preferences > Scripting 中。然後新增該指令碼到工作空間,右擊並選擇“Run as > EASE Script”。每次編輯器自動儲存時,控制檯就會輸出一個儲存的資訊。要關掉自動儲存指令碼,只需要點選控制檯的紅色方塊的停止按鈕即可。
快速擴充套件使用者介面
EASE 最棒的事情是可以將你的指令碼與 IDE 介面上元素(比如一個新的按鈕或選單)結合起來。不需要編寫 java 程式碼或者安裝新的外掛,只需要在你的指令碼前面增加幾行程式碼。
下面是一個簡單的指令碼示例,用來建立三個新專案。
# name : Create fruit projects # toolbar : Project Explorer # description : Create fruit projects loadModule("/System/Resources") for name in ["banana", "pineapple", "mango"]: createProject(name)
上述註釋會專門告訴 EASE 增加了一個按鈕到 Project Explorer 工具條。下面這個指令碼是用來增加一個刪除這三個專案的按鈕的。請看原始碼 createProjects.py 和 deleteProjects.py。
# name : Delete fruit projects # toolbar : Project Explorer # description : Get rid of the fruit projects loadModule("/System/Resources") for name in ["banana", "pineapple", "mango"]: project = getProject(name) project.delete(0, None)
為了使按鈕顯示出來,增加這兩個指令碼到一個新的專案,假如叫做 ‘ScriptsProject’。然後到 Windows > Preference > Scripting > Script Location,點選 ‘Add Workspace’ 按鈕並選擇 ScriptProject 專案。這個專案現在會成為放置指令碼的預設位置。你可以發現 Project Explorer 上出現了這兩個按鈕,這樣你就可以通過這兩個新加的按鈕快速增加和刪除專案。
整合第三方工具
不管怎麼說,你可能需要除了 Eclipse 生態系統以外的工具(這是真的,雖然 Eclipse 已經很豐富了,但是不是什麼都有)。這些時候你會發現將他們包裝在一個指令碼來呼叫會非常方便。這裡有一個簡單的例子讓你整合資源管理器,並將它加入到右鍵選單欄,這樣點選圖示就可以開啟資源管理器瀏覽當前檔案。請看原始碼 explorer.py。
# name : Explore from here # popup : enableFor(org.eclipse.core.resources.IResource) # description : Start a file browser using current selection loadModule("/System/Platform") loadModule('/System/UI') selection = getSelection() if isinstance(selection, org.eclipse.jface.viewers.IStructuredSelection): selection = selection.getFirstElement() if not isinstance(selection, org.eclipse.core.resources.IResource): selection = adapt(selection, org.eclipse.core.resources.IResource) if isinstance(selection, org.eclipse.core.resources.IFile): selection = selection.getParent() if isinstance(selection, org.eclipse.core.resources.IContainer): runProcess("explorer.exe", [selection.getLocation().toFile().toString()])
為了讓這個選單顯示出來,像之前一樣將該檔案加入一個新專案,比如說 ‘ScriptProject’。然後到 Windows > Preference > Scripting > Script Locations,點選“Add Workspace”並選擇 ‘ScriptProject’ 專案。當你在檔案上右擊滑鼠鍵,你會看到彈出選單出現了新的選單項。點選它就會出現資源管理器。(注意,這個功能已經出現在 Eclipse 中了,但是你可以在這個例子中換成其它第三方工具。)
Eclipse 高階基本環境 (EASE)提供一套很棒的擴充套件功能,使得 Eclipse IDE 能使用 Python 來輕鬆擴充套件。雖然這個專案還在早期,但是關於這個專案更多更棒的功能也正在加緊開發中,如果你想為它做出貢獻,請到論壇討論。
我會在 2016 年的 Eclipsecon North America 會議上釋出更多 EASE 細節。我的演講 Scripting Eclipse with Python 也會不單會介紹 Jython,也包括 C-Python 和這個功能在科學領域是如何擴充套件的。
相關文章
- 打造中文版Eclipse (轉)Eclipse
- 用 Rust 打造你的第一個命令列工具Rust命令列
- 水師提督速成指南:用Keras打造你的AI水軍KerasAI
- 用Python打造你的專屬情人節賀卡,趕快發給TA浪漫一下吧Python
- 蘋果mac應用:XMind for mac - 打造你的思維導圖神器蘋果Mac
- Python 實戰:用 Scrapyd 打造爬蟲控制檯Python爬蟲
- 打造你的泛娛樂多媒體應用開發核心能力
- 2023 re:Invent 用 Amazon Q 打造你的知識庫
- 用Python和Keras搭建你自己的AlphaZeroPythonKeras
- 如何部署你的python web應用(二)PythonWeb
- 使用 Gitbook 打造你的電子書Git
- 打造你專屬的ubuntu系統Ubuntu
- python你用過哪些模組Python
- 如果你愛 Python 請用 Python 3Python
- 如果你愛 Python,請用 Python 3Python
- 如何打造 “好用” 的應用?
- 基於微博資料用 Python 打造一顆“心”Python
- 你真的知道Python的字串怎麼用嗎?Python字串
- Python中的numba的基本應用!讓你的Python快一萬倍!Python
- 打造你自己的程式設計師品牌程式設計師
- 華為分析服務功能再次升級:打造你的應用“最強大腦”!
- Eclipse-用Eclipse搭建一個maven專案EclipseMaven
- Eclipse-用Eclipse搭建一個web專案EclipseWeb
- eclipse應用問題Eclipse
- 用Eclipse開發FlexEclipseFlex
- 十大Python機器學習常用庫python開發,你用過你個?Python機器學習
- 實用的IDE工具助力你學習Python!IDEPython
- 用 PyPy 讓你的 Python 程式碼執行得更快!Python
- 常用的Python機器學習庫合集,你用過幾個?Python機器學習
- 用 Python 構建你自己的 RSS 提示系統Python
- Python for Android,將你的Python應用打包為APK檔案PythonAndroidAPK
- 打造自己的 Python 編碼環境Python
- 如何在 Github 打造你的爆款專案Github
- 初入江湖:打造你的自定義網站網站
- eclipse整合Python(pydev外掛的安裝)EclipsePythondev
- Python 裝飾器你也會用Python
- 用Python+Django在Eclipse環境下開發web網站PythonDjangoEclipseWeb網站
- Eclipse-用Eclipse搭建一個maven專案-續EclipseMaven