C#/Java project 在编译时就能检查代码有哪些错误. python 是动态语言, 可以认为是没有编译环节, 没有编译环节意味着我们少一个检查代码错误的机会, 这应该算是动态语言的一个缺点吧! 好在, 可以借助一些代码分析工具部分地弥补这一不足.
这里列举一下pydev 的代码分析功能:
================================
1. pydev 自带的代码分析功能 (这个功能我经常使用)
================================
配置: preference 窗口 pydev/Editor/Code analysis 的前几个tab页.
启用状态: 默认情况下, 该代码分析功能是开启的.
多数设置我都选用默认状态, 除了Others tab, 我强化了检查的级别, 如下:
Others tab:
Indentation problems and mixing of tabs/spaces
Warning --> Error
Redefinition of builtin sysbols
Warning --> Error
使用方法: 在项目树的项目节点上, 弹出快捷菜单, 选 pydev/Code analysis
================================
2. pep8.py 代码分析功能 (我也只是美化代码时, 才使用)
================================
pydev已经集成了pep8检查工具, 并已经安装了pep3.py.
配置: preference 窗口 pydev/Editor/Code analysis 的pep8.py tab页.
默认情况下, 该代码分析功能是关闭的. 我也只是美化代码时, 才开启.
默认的pep8检查太严格了, 我一般都做一些过滤, 设置arguements为下行代码即可.
--ignore=E123,E133,E501
使用方法: 在项目树的项目节点上, 弹出快捷菜单, 选 pydev/Code analysis
怎样抑制"unused variable"的warning ?
def getPath(fullFileName):
(dirName, fileName) = os.path.split(fullFileName)
return os.path.normpath(dirName)
分析这个代码会报"unused variable"的warning. 解决方法是:将这些变量的名称换为unused 或 dummy, 或者是unused 或 dummy 开头的标识符. 这样 code analysis 就不会报warning了.
def getPath(fullFileName):
(dirName, unused) = os.path.split(fullFileName)
return os.path.normpath(dirName)
================================
3. PyLint 代码分析功能(配置很麻烦, 我不用它)
================================
pydev 也集成了 PyLint功能, 但并没有自带pylint.py代码, 需要我们自己安装.
安装: 在pypi.python.org 下载并安装Pylint和两个依赖的包
logilab-astng, logilab-common, Pylint
配置: preference 窗口 pydev/Pylint 页.
然后, 需要pylint加到 pydev python interpreter的PYTHONPATH中.
另外的要求是, 我们的project的源码也需是PYTHONPATH的有效模块.
使用方法: eclipse 主菜单, 选择Project/Build