Eclipse Advanced Scripting Environment( EASE )项目是一组新的但功能强大的插件,使您能够快速破解Eclipse IDE。
Eclipse是一个功能强大的框架,可以使用其内置的插件机制以多种不同方式进行扩展。 但是,如果您只需要一点附加功能,那么编写和部署新插件可能会很麻烦。 现在,使用EASE,有一种更好的方法,而不必编写一行Java代码。 EASE提供了一种使用Python或Javascript等脚本语言轻松实现工作台功能自动化的方法。
在本文中,根据我今年在北美EclipseCon上的演讲 ,我将介绍如何使用Python和EASE设置Eclipse环境的基础知识,并探讨一些使Python增强IDE功能的想法。
设置并运行“ Hello World”
本文中的示例基于Python Jython的Java实现。 您可以将EASE直接安装到现有的Eclipse IDE中。 在此示例中,我们使用Eclipse Mars并安装EASE本身,其模块和Jython引擎。
在Eclipse安装对话框(帮助>安装新软件...)中,安装EASE: http : //download.eclipse.org/ 轻松/更新/每晚
并且,选择以下组件:
- 轻松核心功能
- EASE核心UI功能
- EASE Python开发人员资源
- EASE模块(孵化)
这将为您提供EASE及其模块。 我们感兴趣的主要资源是Resource模块,该模块使您可以访问Eclipse工作区,项目和文件API。

成功安装之后,接下来安装EASE Jython引擎: https : //dl.bintray.com/ pontesegger / ease-jython / 。 安装插件后,测试EASE。 创建一个新项目,并添加具有以下内容的名为hello.py的新文件:
print "hello world"
选择文件,右键单击,然后选择“运行方式-> EASE脚本”。 您应该看到“ Hello World”出现在控制台中。
现在,您可以开始编写可访问工作区和项目的Python脚本。 此功能可用于各种黑客,下面仅是一些想法。
提高代码质量
保持良好的代码质量可能是一项繁琐的工作,尤其是在处理大型代码库或涉及大量开发人员时。 使用脚本可以简化一些痛苦,例如对一组文件进行批处理格式化,甚至修复某些文件以删除unix行尾 ,以便在git等源代码控制中轻松进行比较。 要做的另一件事是使用脚本生成Eclipse标记,以突出显示可以进行改进的代码。 这是一个示例脚本,您可以使用它为Java文件中检测到的所有“ printStackTrace”方法添加任务标记。 参见源代码: markers.py
要运行,请将文件复制到工作区,然后右键单击并选择“运行方式-> EASE脚本”。
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
(
)
)
如果您有任何带有printStackTraces的Java文件,您将能够在“任务”视图和编辑器边缘看到新创建的标记。

自动完成繁琐的任务
当您处理多个项目时,您可能需要自动化一些繁琐且重复的任务。 也许您需要在每个源文件的开头添加版权标头,或者在采用新框架时更新源文件。 例如,当我们第一次切换到使用Tycho和Maven时,我们必须向每个项目添加pom.xml。 使用几行Python即可轻松完成此操作。 然后,当Tycho为无pom版本提供支持时,我们想要删除不必要的pom文件。 再次,几行Python脚本启用了此功能。 例如,下面是一个脚本,该脚本将README.md文件添加到工作区中的每个打开的项目中,请注意它们是Java还是Python项目。 请参阅源代码: add_readme.py 。
要运行,请将文件复制到工作区,然后右键单击并选择“运行方式-> EASE脚本”。
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 IDE当前不支持的一项功能是自动保存您正在处理的当前文件。 尽管此功能已在以后的版本中使用,但您可以使用快速而肮脏的版本,该版本每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
)
在运行此脚本之前,您需要通过选中“窗口”>“首选项”>“脚本”下的框,打开“允许脚本在UI线程中运行代码”设置。 然后,您可以将文件添加到工作区中,右键单击它,然后选择“运行方式> EASE脚本”。 每次保存编辑器时,都会在控制台视图中打印出一条保存消息。 要关闭自动保存功能,只需在控制台视图中按“终止”红色方形按钮即可停止脚本。

使用自定义按钮,菜单等快速扩展用户界面
关于EASE的最好的事情之一是,它允许您获取脚本并将其快速挂接到IDE的UI元素中,例如,作为新按钮或新菜单项。 无需编写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>首选项>脚本>脚本位置。 单击“添加工作区”按钮,然后选择ScriptsProject。 现在,该项目成为查找脚本文件的默认位置。 您应该看到按钮显示在Project Explorer中,而无需重新启动IDE。 您应该能够使用新添加的按钮快速创建和删除项目。

与第三方工具集成
有时您可能需要使用Eclipse生态系统之外的工具(很遗憾,但确实如此,它有很多功能,但不能完成所有工作)。 在这些情况下,将对该调用的调用包装在脚本中可能非常方便。 这是一个示例,允许您与explorer.exe集成,并将其添加到内容菜单,以便您可以使用当前选择立即打开文件浏览器。 查看源代码: 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
(
)
]
)
要显示菜单,请将脚本添加到新项目中,将其命名为“ ScriptsProject”。 然后转到Windows>首选项>脚本>脚本位置。 单击“添加工作区”按钮,然后选择ScriptsProject。 右键单击文件时,您应该看到新菜单项显示在上下文菜单中。 选择此操作以打开文件浏览器。 (请注意,此功能已在Eclipse中提供,但您可以使用本示例来适应其他第三方工具)。

Eclipse Advanced Scripting Environment提供了一种很好的方法,可以利用Python的功能来充分利用Eclipse IDE。 这是一个处于起步阶段的项目,因此还有更多的事情要做。 了解有关该项目的更多信息,并通过注册论坛参与。
我将在2016年北美Eclipsecon大会上谈论更多关于EASE的内容。我的演讲“ 使用Python编写Eclipse脚本”将探讨如何不仅可以使用Jython,还可以使用C-Python以及如何针对科学用例专门扩展此功能。
翻译自: https://opensource.com/life/16/2/how-use-python-hack-your-ide