第一次用代码编辑助手(Content Assistants)这类东西是 VC 上的 Visual Assist,俗称 VA,强大不是吹出来的。最近发现一篇 Eclipse 下针对 PyDev 的 CA 介绍,忍不住转载过来,全文在这里《PyDev for Eclipse 简介》,via:IBM developerWorks 中国。Eclipse 的 CA 看起来还是很强大的。
—————转载分界线——————
源代码编辑助手 (Content Assistants)
源代码编辑助手 (Content Assistants,以下简称 CA),顾名思义,即用于帮助开发者编辑源程序,它提供了诸多方便实用的功能,引导开发者进行高效快速的项目开发。
通过快捷键 Ctrl+1 可以激活 CA,它支持的功能如下:
PyDev
- Move import to global scope
- Create docstring
- Assign result to new local variable (or field)
- Assign parameters to attributes
- Surround code with try..except or try..finally
PyDev Extensions
- Make import for undefined token
- Ignore error
- Don’t analyze module
在安装 PyDev 时,PyDev 和 PyDev Extensions 包都已安装,所以 CA 的这几大功能现在都支持。首先,先介绍如何使用 PyDev 包含的 CA 功能。
- Move import to global scope
以如下代码为例,将光标移至 import sys 后,启动快捷键 Ctrl+1 激活 CA,”Move import to global scope” 出现在标签中,按 Enter 应用此功能。如果不想应用该功能,可以按 Esc 键取消。
#!/usr/bin/python –u
sys.path.append(“./VirtualFS”)
import sys
应用该功能后,import sys 被成功移至全局范围内,消除了之前的错误。改变后的代码如下。
#!/usr/bin/python –u
import sys
sys.path.append(“./VirtualFS”)
- Create docstring
Create docstring 功能可以自动为函数添加参数注解。将光标移至如下代码行,启动快捷键Ctrl+1 激活 CA,标签栏中出现 ”Make docstring”。
def __init__(self, dbUser, dbPswd, dbHost):
按 Enter 应用该功能后,自动为该函数添加了参数注解。
def __init__(self, dbUser, dbPswd, dbHost):
'''
@param virtualOperator:
@param database:
@param hostname:
@param workDir:
'''
- Assign result to new local variable (or field)
CA 还提供一种功能能够将函数返回结果赋给新的内部变量。以函数 callMethod 为例,将光标移至 a.callMethod() 行激活 CA。
def method (self, a):
a.callMethod()
选择 ”Assign to field(self, callMethod)” 或者 ”Assign to local(callMethod)”,可以将a.callMethod() 结果赋给新的内部变量 self.callMethod,改变后的代码如下。
def method (self, a):
self.callMethod = a.callMethod()
- Assign parameters to attributes
在程序编辑过程中,如果需要把函数参数赋给变量,可以使用 CA 的 Assign parameters to attributes 功能自动完成这样的需求。将光标移至函数 m1 所在行,激活 CA。
class Foo(object):
Def m1(self, a, b):
在标签栏中选择 ”Assign parameters to attributes”,自动生成两行代码将参数 a,b 赋给同名变量。
class Foo(object):
def m1(self, a, b):
self.a = a
self.b = b
- Surround code with try..except or try..finally
对可能产生异常的代码,要进行异常捕获,通常使用 try..except 或者 try..finally 语句来捕获异常。选中一段代码 print usage,激活 CA 的 ” Surround code with try..except or try..finally”功能,可以自动对 print usage 进行异常捕获。
import sys
def method (self, usage):
try:
print usage
except:
raise
下面,再介绍 PyDev Extensions 包含的 CA 功能是如何被运用的。
- Make import for undefined token
以如下一段代码为例,xmlreader 未定义,语法分析出错。
class Test:
def method(self):
xmlreader
将鼠标移至出错行,启动快捷键 Ctrl+1 激活 CA,选择标签栏中的 ”Import xmlreader(xml.sax)”,自动生成一行代码 from xml.sax import xmlreader,语法错误消除。
from xml.sax import xmlreader
class Test:
def method(self):
xmlreader
- Ignore error
仍以上述代码为例,由于 xmlreader 没有被定义,包含语法错误,在这一行激活 CA,选择 ”UndefinedVariable”,语法错误被忽略,xmlreader 后自动生成一行注释标明 ”#@UndefinedVariable”。
class Test:
def method(self):
xmlreader #@UndefinedVariable
- Don’t analyze module
语法分析器可以帮助显示包含语法错误的代码,但在程序编辑过程中,有时候需要刻意取消对程序的语法分析,CA 的 Don’t analyze module 提供了这样的功能。
将光标移至程序第一行,激活 CA,选择 ”@PydevCodeAnalysisIgnore”,自动生成一行代码 ”#@ PydevCodeAnalysisIgnore”,忽略对程序体的语法分析。
#@PydevCodeAnalysisIgnore
class Test:
def method(self):
xmlreader
- Quick Outline
对特定的 Python 文件,Pydev Extensions 提供的 Quick Outline 能最简单快捷地获取该文件的组织结构,并能在该文件中方便地查询定位所需信息。
在 Pydev 透视图中,选择 Source -> Show Quick Outline,或者使用快捷键 Ctrl+O 启动该功能。
Python 文件的类、函数等组织架构便以树状形式被形象地展现出来。同时,Filter 提供了查询定位的功能,可以方便地查询所需信息并定位到相应的代码段。
图 8. Quick Outline

- Globals Browser
Globals Browser 是 Pydev Extensions 提供的另外一种强大的查询定位功能。它可以查询定位整个工程内的一些定义和属性,包括:
通过三种方式可以启动该功能。
- 在 Pydev 透视图中,从菜单栏中选择 Pydev -> Globals Browser。
- 在Pydev 透视图中,工具栏有如下的一个小图标,鼠标移至该图标上方,显示 ”Pydev: Globals Browser” 标注。点击该图标按钮,可以启动 Globals Browser 功能。
- 通过快捷键 Ctrl + Shift + T,可以快速启动 Globals Browser 功能。
在 Filter 中输入所要查询的定义、变量或者属性,Globals Browser 可以快速地定位到相应的代码段。
- Hierarchy View
当某个 python 文件包含多个类时,如何才能简单直观地了解各个类之间的依存关系?Hierarchy View 提供了这样的功能,它能将多个类之间的层次关系以树状结构直观地显示出来。
以一段 Python 代码为例,定义了 Super1, Super2, ToAnalyze 和 Sub1 四个类。在 Pydev透视图中,选择 Windows -> Show View -> Other,在弹出的 Show View 窗口中,选择 Pydev -> Hierarchy View。按快捷键 F4 激活 Hierarchy View,可以看到树状图中显示出了类间的层次关系。
图 12. 在 Hierarchy View 中显示类的层次关系

Hierarchy View 还支持以下四个功能:
- 在层次图中,用鼠标单击某个类,图下方即显示出该类的方法。
- 如果双击某个类、方法或者属性,则会调出源程序,进入对该类、方法或者属性的编辑状态。
- 在 Hierarchy View 中,按住鼠标右键,并相左或向右移动鼠标,层次图则会相应地缩小或放大。
- 在 Hierarchy View 中,按住鼠标左键移动鼠标,层次图则会被随意拖动到相应的位置。
———————–转载结束————————
Related posts