Pylint学习

Pylint学习

Install Pylint

用virtualenv安装pylint:

1
2
3
pip install virtualenv
#超时的话可以这样试一下
pip --default-timeout=100 install virtualenv

创建一个虚拟环境:

1
2
virtualenv --no-site-packages venv
source venv/bin/activate

Invoking pylint

pylint可以在命令行使用,具体用法为:

1
pylint [options] modules_or_packages

从上面的用法可以得知,我们应该提供pylint要检查的python包或者模块的名称。而Pylint不会导入这些包,而是利用Python internals去进行定位。因此我们需要关注PYTHONPATH,防止它去检查已安装的模块版本,而不是开发版本。

如果传给pylint一个单文件,例如这样:

1
pylint mymodules.py

就要保证当前的工作目录为一个package(即目录下有__init__.py)。

另外,也可以在其它的python程序中调用pylint,比如:

1
2
3
4
from pylint import epylint as lint
(pylint_stdout, pylint_stderr) = lint.py_run('hello.py', return_std=True)
print pylint_stdout.getvalue()
print pylint_stderr.getvalue()

command line options

先来看两个基本的选项:

--version show program's version number and exit
-h, --help show help about the command line options
1
2
3
4
5
6
(venv) ➜  py pylint --version
No config file found, using default configuration
pylint 1.9.3,
astroid 1.6.5
Python 2.7.10 (default, Jul 15 2017, 17:16:57)
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)]

接下来介绍一个message control的命令后选项:--disable--enable,如果我们只是希望启动某些checker,可以先用--disable = all然后使用--enable = <symbol>,其中<symbol>是逗号分隔的检查器名称和消息符号列表。这样的使用方式对于仅仅希望启动少数的checkers非常有用。

举个例子,假如你只想启动相似性检查,可以增加选项:

1
–-disable=all –-enable=similarities

pylint提供的symbol,可以参考:https://docs.pylint.org/en/1.6.0/features.html#messages-control-options

Parallel execution

如果主机的CPU数量超过1个,可以使用-j选项加速pylint的运行,比如:

1
pylint -j 4 mymodule1.py mymodule2.py mymodule3.py mymodule4.py

这样就会产生4个子进程,其中每个提供的模块将被并行检查。checkers发现的问题不会立即显示。 完成检查模块后才会立即显示它们。当提供的参数为0时,将会使用主机上所有CPU的数量。