一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - Python打造出適合自己的定制化Eclipse IDE

Python打造出適合自己的定制化Eclipse IDE

2020-08-14 11:37Python教程網(wǎng) Python

這篇文章主要介紹了Python打造出適合自己的定制化Eclipse IDE的相關(guān)資料,需要的朋友可以參考下

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

Python打造出適合自己的定制化Eclipse IDE

在本篇文章中,我們將共同了解如何利用Python與EASE設(shè)置Eclipse環(huán)境,同時(shí)考量多種利用Python強(qiáng)化IDE方案的可行途徑。

設(shè)置并運(yùn)行“Hello World”

今天文章中所涉及的各項(xiàng)示例基于Python Java實(shí)現(xiàn)方案,即Jython。大家可以直接將EASE安裝至現(xiàn)有Eclipse IDE當(dāng)中。不過在此次示例內(nèi),我們采用Eclipse Mars并安裝EASE本體、其模塊以及Jython引擎。

在Eclipse安裝對話框之內(nèi)(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開發(fā)者資源)
EASE modules (Incubation) (EASE模塊,孵化)
如此一來,我們就能夠使用EASE及其各項(xiàng)模塊。在這里我們主要需要使用的是資源模塊,其允許我們訪問Eclipse工作區(qū)、項(xiàng)目以及文件API。

Python打造出適合自己的定制化Eclipse IDE

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

print "hello world"

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

現(xiàn)在大家可以開始編寫能夠接入工作區(qū)與項(xiàng)目的Python腳本了。從這里開始,我們立足于以下幾項(xiàng)目標(biāo)對IDE進(jìn)行調(diào)整。

改進(jìn)代碼質(zhì)量

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

首先在工作區(qū)內(nèi)復(fù)制文件,而后右鍵點(diǎn)擊對應(yīng)文件并選擇“Run as -> EASE script”。

?
1
2
3
4
5
6
7
8
9
10
11
12
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())

如果大家已經(jīng)擁有部分包含printStackTraces的Java文件,則可以在編輯器邊緣處的任務(wù)視圖內(nèi)查看到新近創(chuàng)建的標(biāo)記。

Python打造出適合自己的定制化Eclipse IDE

繁瑣任務(wù)自動化處理

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

要運(yùn)行這套腳本,將該文件復(fù)制至工作區(qū),而后右鍵點(diǎn)擊這個(gè)文件并選擇“Run as -> EASE script”。

?
1
2
3
4
5
6
7
8
9
10
11
12
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)

結(jié)果就是,每個(gè)已打開項(xiàng)目都將擁有一個(gè)README.md文件,而Java與Python項(xiàng)目則擁有額外的描述行。

Python打造出適合自己的定制化Eclipse IDE

新功能原型設(shè)計(jì)

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

?
1
2
3
4
5
6
7
8
9
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)

在運(yùn)行此腳本之前,大家還需要在Window > Preferences > Scripting內(nèi)的對話框中勾選“Allow Scripts to run code in UI thread”(允許腳本在UI線程內(nèi)運(yùn)行代碼)選項(xiàng)。如此一來,大家就能夠?qū)⒃撐募砑拥焦ぷ鳟?dāng)中,右鍵對其進(jìn)行點(diǎn)擊并選擇“Run as -> EASE script”。每當(dāng)編輯器進(jìn)行保存操作時(shí),控制臺視圖中都會輸出一條保存信息。而要關(guān)閉自動保存功能,大家只需在控制臺視圖內(nèi)點(diǎn)擊“Terminate”紅色按鈕停止該腳本即可。

Python打造出適合自己的定制化Eclipse IDE

利用按鈕、菜單及其它條目對用戶界面進(jìn)行快速擴(kuò)展

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

以下示例為一套簡單腳本,負(fù)責(zé)為我們創(chuàng)建三個(gè)新項(xiàng)目:

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

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

?
1
2
3
4
5
6
7
# 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)

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

Python打造出適合自己的定制化Eclipse IDE

與第三方工具相集成

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 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()])

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

Python打造出適合自己的定制化Eclipse IDE

這套Eclipse高級腳本環(huán)境能夠充分發(fā)揮Python的強(qiáng)大潛能,從而幫助我們靈活運(yùn)用Eclipse IDE。目前此項(xiàng)目正處于起步階段,因此未來還可以期待更多激動人心的功能與特性。

以上所述是關(guān)于Python打造出適合自己的定制化Eclipse IDE的相關(guān)知識,希望對大家有所幫助!

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 青青成人 | 99爱在线| 国产成人免费高清激情明星 | 秀婷程仪公欲息肉婷在线观看 | 女高h| 四虎国产精品免费入口 | 国产亚洲福利一区二区免费看 | 91久久碰国产 | 97色综合 | 久久AV国产麻豆HD真实乱 | 思思91精品国产综合在线 | 福利视频一区二区思瑞 | 五月天中文在线 | 女教师被学生糟蹋三天 | 猛吸奶水的老汉 | 国产高清自拍 | 欧美一二区视频 | 国产激情在线 | 免费看3d小舞被躁视频网站 | 国产一二区视频 | www免费看 | 999精品视频这里只有精品 | 99国产精品 | 狠狠色| 国产一区二区在线免费观看 | 久久久久久久国产精品视频 | 亚洲午夜视频 | 亚洲一卡2卡4卡5卡6卡残暴在线 | 欧美ⅹxxxhd3d | 四虎网址大全 | 亚洲欧美专区精品伊人久久 | 亚洲国产精品综合久久网络 | 成年人在线免费观看视频网站 | 国产精品亚洲精品青青青 | 91.prom在线观看国产 | h版在线观看 | jzjzjz日本在线观看 | 国产精品久久久久aaaa | 国产香蕉97碰碰在线视频 | 唯美清纯 自拍偷 | 99久久精品无码一区二区毛片 |