Numpy 用Pylint分析代码

用Pylint分析代码,Pylint是另一个开源的静态代码分析器,最初由Logilab开发。Pylint比Pyflakes复杂,且允许用户做更多的定制,但分析速度比Pyflakes慢。更多相关信息请见http://www.logilab.org/card/pylint_manual。

在本章中,我们还是需要先从Git版本库下载NumPy代码。简明起见,此处省略对该步骤的介绍。

准备工作

你可以选择从源代码安装Pylint,但各种依赖关系处理起来比较麻烦,因此最好选择用easy_install或pip安装,安装命令如下。

easy_install pylint
sudo pip install pylint

具体步骤

我们还是选择对NumPy代码库的根目录中的文件进行分析。和用Pyflakes分析相比,我们得到的输出信息要多很多。因为Pylint打印出了太多文本信息,所以这里只列出其中的一小部分。

$ pylint *.py
No config file found, using default configuration
************* Module pavement
C: 60: Line too long (81/80)
C:139: Line too long (81/80)
...
W: 50: TODO
W:168: XXX: find out which env variable is necessary to avoid the
pb with python
W: 71: Reimport 'md5' (imported line 143)
F: 73: Unable to import 'paver'
F: 74: Unable to import 'paver.easy'
C: 79: Invalid name "setup_py" (should match (([A-Z_][A-Z0-
9_]*)|(__.*__))$)
F: 86: Unable to import 'numpy.version'
E: 86: No name 'version' in module 'numpy'
C:149: Operator not followed by a space
if sys.platform =="darwin":
                ^^
C:202:prepare_nsis_script: Missing docstring
W:228:bdist_superpack: Redefining name 'options' from outer scope
(line 74)
C:231:bdist_superpack.copy_bdist: Missing docstring
W:275:bdist_wininst_nosse: Redefining name 'options' from outer
scope (line 74)
...

攻略小结

Pylint默认输出纯文本的分析结果,但如有需要,可以指定其输出HTML格式的信息。分析结果是一条条的消息,消息的格式如下。

MESSAGE_TYPE: LINE_NUM:[OBJECT:] MESSAGE

消息类型有以下几种。

  • [R] 重构类型,建议进行重构。
  • [C] 惯例类型,违反了代码风格。
  • [W] 警告类型,针对小问题的警告消息。
  • [E] 错误类型,错误或潜在的bug。
  • [F] 致命错误类型,发生了致命错误,因此不能进行进一步的分析。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程