如何使用Python入侵Eclipse IDE

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。

install EASE nightly

成功安装之后,接下来安装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文件,您将能够在“任务”视图和编辑器边缘看到新创建的标记。

EASE code quality

自动完成繁琐的任务

当您处理多个项目时,您可能需要自动化一些繁琐且重复的任务。 也许您需要在每个源文件的开头添加版权标头,或者在采用新框架时更新源文件。 例如,当我们第一次切换到使用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项目具有附加的描述行。

Automate tedious tasks on EASE

原型新功能

您还可以使用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脚本”。 每次保存编辑器时,都会在控制台视图中打印出一条保存消息。 要关闭自动保存功能,只需在控制台视图中按“终止”红色方形按钮即可停止脚本。

Prototype new features with 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.pydeleteProjects.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。 您应该能够使用新添加的按钮快速创建和删除项目。

Custom buttons, menus, etc on EASE

与第三方工具集成

有时您可能需要使用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中提供,但您可以使用本示例来适应其他第三方工具)。

Integrate with 3rd party tools on EASE

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值