用 python 打造你的 eclipse-mile米乐体育

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,你就可以看见任务视图和编辑器侧边栏上自动新加的标记。

自动构建繁琐任务

当同时工作在多个项目的时候,肯定需要完成许多繁杂、重复的任务。可能你需要在所有源文件头上加入米乐app官网登录的版权信息,或者采用新框架时候自动更新文件。例如,当首次切换到 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 和这个功能在科学领域是如何扩展的。

展开全文
内容来源于互联网和用户投稿,文章中一旦含有米乐app官网登录的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系米乐app官网登录删除

最新文章

网站地图