成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何利用Python打造出適合自己的定制化Eclipse IDE?

譯文
開發 后端
Eclipse高級腳本環境(簡稱EASE)項目包含一整套強大的新型插件,能夠幫助大家快速對自己的Eclipse IDE進行定制。

Eclipse是一套強大的框架,其能夠通過內置插件機制實現多種擴展方式。然而要想添加一小點額外功能,大家都不可避免地需要面臨新插件的編寫與部署工作,這顯然有點令人頭痛。現在在EASE的幫助下,我們能夠以更理想的方式完成這項任務——而且整個過程不需要涉及任何一代Java代碼。EASE能夠讓我們輕松利用Python或者JavaScript等腳本語言實現自動化工作臺功能。

[[163329]]

在本篇文章中,我們將共同了解如何利用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核心功能)
  • EASE core UI feature(EASE核心UI功能)
  • EASE Python Developer Resources(EASE Python開發者資源)
  • EASE modules (Incubation) (EASE模塊,孵化)

如此一來,我們就能夠使用EASE及其各項模塊。在這里我們主要需要使用的是資源模塊,其允許我們訪問Eclipse工作區、項目以及文件API。

在上述條目成功安裝完成后,接下來需要安裝EASE Jython引擎:https://dl.bintray.com/pontesegger/ease-jython/。一旦各插件安裝完畢,下面需要測試EASE。創建一個新項目并通過以下命令添加一個名為hello.py的文件:

  1. print "hello world" 

選定該文件,右鍵點擊并選擇“Run as -> EASE script”。這時大家會看到控制臺中顯示“Hellp World”。

現在大家可以開始編寫能夠接入工作區與項目的Python腳本了。從這里開始,我們立足于以下幾項目標對IDE進行調整。

改進代碼質量

保證良好的代碼質量是一項非常困難的任務,特別是在代碼庫規模龐大或者涉及多位開發人員的情況之下。其中部分難題能夠通過引入腳本得到輕松解決,例如對某類文件進行批量格式調整,或者在git等源代碼控制體系內移除unix結尾行以簡化文件內容對照等。另外值得強調的是,我們也可以利用腳本生成Eclipse標記,從而以代碼高亮顯示的方式實現功能改進。以下腳本示例可用于將任務標記機制添加至全部“printStackTrace”方法,從而實現Java文件內部檢測。點擊此鏈接查看源代碼: markers.py

首先在工作區內復制文件,而后右鍵點擊對應文件并選擇“Run as -> EASE script”。

 

  1. loadModule('/System/Resources'
  2.   
  3. from org.eclipse.core.resources import IMarker 
  4.   
  5. for ifile in findFiles("*.java"): 
  6.     file_name = str(ifile.getLocation()) 
  7.     print "Processing " + file_name 
  8.     with open(file_name) as f: 
  9.         for line_no, line in enumerate(f, start=1): 
  10.             if "printStackTrace" in line: 
  11.                 marker = ifile.createMarker(IMarker.TASK) 
  12.                 marker.setAttribute(IMarker.TRANSIENT, True) 
  13.                 marker.setAttribute(IMarker.LINE_NUMBER, line_no) 
  14.                 marker.setAttribute(IMarker.MESSAGE, "Fix in Sprint 2: " + line.strip()) 

如果大家已經擁有部分包含printStackTraces的Java文件,則可以在編輯器邊緣處的任務視圖內查看到新近創建的標記。

繁瑣任務自動化處理

當大家同時處理多個項目時,大家可能希望以自動化方式處理某些繁瑣而重復性的任務。大家也許需要在每個源文件起始處添加一條版權標題,或者在采用新框架時對源文件進行更新。舉例來說,當我們首次面向Tycho以及Maven進行切換時,我們需要為每個項目添加一個pom.xml文件。只需幾行Python代碼即可輕松完成這項工作。但由于Tycho目前已經支持無pom構建,因此我們又需要移除這些不必要的pom文件。同樣的,幾行Python腳本即可實現這一訴求。舉例來說,在這里我們利用以下腳本向工作區內的每個已打開項目添加一個README.md文件——當然,前提是它們屬于Java或者Python項目。點擊以下鏈接查看源代碼:add_readme.py.

要運行這套腳本,將該文件復制至工作區,而后右鍵點擊這個文件并選擇“Run as -> EASE script”。

 

  1. loadModule('/System/Resources'
  2.   
  3. for iproject in getWorkspace().getProjects(): 
  4.     if not iproject.isOpen(): 
  5.         continue 
  6.   
  7.     ifile = iproject.getFile("README.md"
  8.   
  9.     if not ifile.exists(): 
  10.         contents = "# " + iproject.getName() + "\n\n"  
  11.         if iproject.hasNature("org.eclipse.jdt.core.javanature"): 
  12.             contents += "A Java Project\n" 
  13.         elif iproject.hasNature("org.python.pydev.pythonNature"): 
  14.             contents += "A Python Project\n" 
  15.         writeFile(ifile, contents) 

結果就是,每個已打開項目都將擁有一個README.md文件,而Java與Python項目則擁有額外的描述行。

新功能原型設計

大家也可以利用Python腳本對大部分所需功能進行快速修復,或者將其作為原型設計以幫助團隊成員或者用戶了解如何使用這項新功能。舉例來說,Eclipse IDE目前尚不支持對正在處理的文件進行自動保存。雖然這項功能肯定會在未來的版本中出現,但大家仍然可以自己動手讓當前文件每隔30秒或者在編輯器被關閉時進行自動保存。以下為主方法中的代碼片段。點擊以下鏈接查看完整源代碼: autosave.py

 

  1. def save_dirty_editors(): 
  2.     workbench = getService(org.eclipse.ui.IWorkbench) 
  3.     for window in workbench.getWorkbenchWindows(): 
  4.         for page in window.getPages(): 
  5.             for editor_ref in page.getEditorReferences(): 
  6.                 part = editor_ref.getPart(False) 
  7.                 if part and part.isDirty(): 
  8.                     print "Auto-Saving", part.getTitle() 
  9.                     part.doSave(None) 

在運行此腳本之前,大家還需要在Window > Preferences > Scripting內的對話框中勾選“Allow Scripts to run code in UI thread”(允許腳本在UI線程內運行代碼)選項。如此一來,大家就能夠將該文件添加到工作當中,右鍵對其進行點擊并選擇“Run as -> EASE script”。每當編輯器進行保存操作時,控制臺視圖中都會輸出一條保存信息。而要關閉自動保存功能,大家只需在控制臺視圖內點擊“Terminate”紅色按鈕停止該腳本即可。

利用按鈕、菜單及其它條目對用戶界面進行快速擴展

EASE的最佳特性之一在于允許大家使用自己的腳本,同時將其快速鉤入IDE內的UI元素——作為新按鈕或者新的菜單條目。不需要編寫Java代碼或者使用新插件,只須在腳本標題處添加幾行內容即可——就是這么簡單。

以下示例為一套簡單腳本,負責為我們創建三個新項目:

 

  1. # name      : Create fruit projects 
  2. # toolbar   : Project Explorer 
  3. # description   : Create fruit projects 
  4.   
  5. loadModule("/System/Resources"
  6.   
  7. for name in ["banana""pineapple""mango"]: 
  8.     createProject(name) 

指向EASE的注釋行負責向項目管理器工具欄添加一個新按鈕。下面展示的是另一套腳本,負責在同一工具欄內添加另一個按鈕,從而將這三個項目徹底刪除。點擊以下鏈接查看其源代碼: createProjects.py與deleteProjects.py。

 

  1. # name            :Delete fruit projects 
  2. # toolbar        : Project Explorer 
  3. # description    : Get rid of the fruit projects 
  4.   
  5. loadModule("/System/Resources"
  6.   
  7. for name in ["banana""pineapple""mango"]: 
  8.     project = getProject(name) 
  9.     project.delete(0, None) 

為了讓這些按鈕正確顯示,我們還需要向新項目中添加兩個腳本文件——這里我們將新項目稱為“ScriptsProject”。接下來一步步打開Windows > Preference > Scripting > Script Locations。點擊“Add Workspace”按鈕并選擇ScriptsProject。此項目現在已經成為腳本文件存放的默認位置。這時大家應該可以在項目管理器內直接查看到這些按鈕,而不必進行IDE重啟。利用這些新按鈕,我們能夠快速創建并刪除這三個對應項目。

與第三方工具相集成

大家可能隨時需要使用Eclipse生態系統之外的工具選項(而且必須承認,雖然Eclipse本身非常強大,但仍有力有不逮的領域)。對于此類場景,大家可以非常便捷地將封包請求與工具調用添加到腳本當中。以下示例允許大家集成explorer.exe,同時將其添加到內容菜單當中,這樣我們就可以利用現有選擇隨時打開文件瀏覽器了。點擊以下鏈接查看其源代碼:explorer.py

 

  1. # name      : Explore from here 
  2. # popup     : enableFor(org.eclipse.core.resources.IResource) 
  3. # description   : Start a file browser using current selection 
  4. loadModule("/System/Platform"
  5. loadModule('/System/UI'
  6.   
  7. selection = getSelection() 
  8. if isinstance(selection, org.eclipse.jface.viewers.IStructuredSelection): 
  9.     selection = selection.getFirstElement() 
  10.   
  11. if not isinstance(selection, org.eclipse.core.resources.IResource): 
  12.     selection = adapt(selection, org.eclipse.core.resources.IResource) 
  13.   
  14. if isinstance(selection, org.eclipse.core.resources.IFile): 
  15.     selection = selection.getParent() 
  16.   
  17. if isinstance(selection, org.eclipse.core.resources.IContainer): 
  18.     runProcess("explorer.exe", [selection.getLocation().toFile().toString()]) 

為了讓該菜單得到正確顯示,我們需要將該腳本添加至一個新項目當中——我們仍然將其稱為“ScriptsProject”。接下來前往Windows > Preference > Scripting > Script Locations。點擊“Add Workspace”按鈕并選擇ScriptsProject。現在,大家應該能夠在右鍵某個文件后看到該新菜單條目顯示在彈出菜單當中。點擊以打開文件瀏覽器。(需要注意的是,這項功能目前已經存在于Eclipse當中,但這里我們只是將其作為示例,用于解釋其它第三方工具的集成方式。)

這套Eclipse高級腳本環境能夠充分發揮Python的強大潛能,從而幫助我們靈活運用Eclipse IDE。目前此項目正處于起步階段,因此未來還可以期待更多激動人心的功能與特性。感興趣的朋友可以點擊此處查看該項目說明或者點擊此處參與其相關論壇(英文原文)。

我們將在2016年的Eclipsecon北美大會上就EASE做出更為詳盡的介紹。在屆時進行的《利用Python實現Eclipse腳本化》主題演講中,除了現有Jython之外,我還將探討C-Python以及如何將其功能擴展至科學用例當中。敬請期待!

原文標題:How to use Python to hack your Eclipse IDE

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

責任編輯:王雪燕 來源: 51CTO
相關推薦

2020-07-13 07:10:09

SQLSQL語句查詢

2013-12-10 09:00:51

WindowsLinux開發環境

2010-10-28 10:26:56

求職

2024-11-05 08:28:50

2024-09-24 13:31:14

2024-09-26 21:44:29

2015-05-08 09:47:35

2023-04-12 07:25:55

2024-06-11 08:00:00

2022-05-31 08:53:29

Logger定制化Go

2009-06-17 17:44:41

Eclipse插件Sp

2016-10-17 20:54:34

Web技術堆棧編程語言

2017-06-07 08:54:47

APM儀表板Lombok設計框架

2020-10-09 10:15:22

谷歌機器人輔助機器人

2017-04-13 09:56:57

0分貝主機風扇

2022-04-12 15:05:22

機器人研究人工智能

2011-08-30 22:50:13

D-LinkDNS-320

2022-04-30 09:49:58

終端工具插件
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91在线免费视频 | 日韩高清一区 | 黄a大片 | 色婷婷亚洲国产女人的天堂 | 瑞克和莫蒂第五季在线观看 | 蜜桃视频在线观看免费视频网站www | 欧美一区二 | 久久精品中文字幕 | 成人免费淫片aa视频免费 | 成人精品免费视频 | 成人做爰www免费看视频网站 | 亚洲成人一区二区 | 国产免费一级一级 | 精品国产乱码久久久久久蜜柚 | 手机看黄av免费网址 | 日韩精品区 | 国产视频久久 | 国产乱码精品一区二区三区中文 | 午夜一级黄色片 | 精品中文字幕视频 | jlzzjlzz欧美大全 | 国产亚洲人成a在线v网站 | 亚洲综合一区二区三区 | 亚洲精久| 国产精品jizz在线观看老狼 | 日韩中文字幕在线视频 | 中文字幕国产视频 | 亚洲精品成人在线 | 日本高清视频在线播放 | 懂色中文一区二区三区在线视频 | 欧美日韩福利视频 | 亚洲精品无人区 | 久产久精国产品 | 91精品亚洲 | 久久久精品一区二区 | 国产精品亚洲视频 | 成人免费在线小视频 | 福利精品在线观看 | 日韩精品国产精品 | 国产精品永久免费 | 国产福利91精品 |