什么是Pylint
Pylint是一个Python代码分析工具,它分析Python代码中的错误,查找不符合代码风格标准(Pylint默认使用的代码风格是PEP8)和有潜在问题的代码。目前Pylint的最新版本是1.8.2。
Pylint 是一个 Python 工具,除了平常代码分析工具的作用之外,它提供了更多的功能:如检查一行代码的长度,变量名是否符合命名标准,一个声明过的接口是否被真正实现等等。
Pylint 的一个很大的好处是它的高可配置性,高可定制性,并且可以很容易写小插件来添加功能。
如果运行两次 Pylint,它会同时显示出当前和上次的运行结果,从而可以看出代码质量是否得到了改进。
目前在 eclipse 的 pydev 插件中也集成了 Pylint。
安装Pylint
本教程默认IDE为Pycharm,Python环境默认Python3.6。
Pycharm下安装Pylint
首先,打开Pycharm,选择File-->New Project新建一个工程,自己取名,我们使用Virtualenv环境,关于Virtualenv另外开帖介绍,这里照做就行,Base interpreter选择Python的安装路径中的python.exe,location为本项目单独的环境(一般是项目下面venv文件夹),一般情况下Pycharm已经为我们选好了,按照下图设置即可,点击Create创建工程。
选择File-->setting进入设置菜单。
按下图所示,找到对应栏目,如果Project interpreter显示``,请自己选择python环境安装地址。
点击右边的+号,在上方输入Pylint,然后点击install package进行安装。安装完成后,继续在设置菜单,选中External Tools栏目,右边有个+号箭头,点击进入。
完成如下的设置:(这里先按照如下设置即可,具体参数后面说)
[scode type="lblue"]
Program:E:/PycharmProjects/se/venv/Scripts/pylint.exe
Parameters:-rn --msg-template="{abspath}:{line}: [{msg_id}({symbol}), {obj}] {msg}" $FilePath$
Working directory:$FileDir$
Output filter:$FILE_PATH$:$LINE$:
[/scode]
[scode type="yellow"]
“Parameters”里其它参数可以随意写,但是必须在最后加上$FilePath$,“Working directory”里必须写 $FileDir。
[/scode]
Pycharm的Pylint到这我们就安装配置完成了。
其他方式安装Pylint
Windows下:
直接在控制台下使用 pip install pylint 即可(如果 pip 不可用,首先安装最新版 Python,会默认安装 pip,或者找到 pip 的安装脚本先装 pip)。装好后,pylint.exe 的大体位置在 Python安装路径/Scripts/ 下,将此路径添加到环境变量 PATH。
Linux下:
直接在 Terminal 中使用 $ sudo pip install pylint安装即可。装好后,pylint 会在 /usr/bin/pylint
Pylint工具的使用
接下来新建一个Python文件,project栏中,右键选中项目名称,选择New-->Python File,输入文件名字即可。
输入一段程序,这里我们输入以下代码进行测试:
在项目上单击右键,选择External Tools-->pylint即可在控制台看到代码分析结果。
Python代码
[hide]
# coding=utf-8
import string
shift = 3
choice = input("would you like to encode or decode?")
word = (input("Please enter text"))
letters = string.ascii_letters + string.punctuation + string.digits
encoded = ''
if choice == "encode":
for letter in word:
if letter == '':
encoded = encoded + ''
else:
x = letters.index(letter) + shift
encoded = encoded + letters[x]
if choice == 'decode':
for letter in word:
if letter == '':
encoded = encoded + ''
else:
x = letters.index(letter) - shift
encoded = encoded + letters[x]
print(encoded)
[/hide]
如果看到返回值为0,说明程序没问题了。
问题解决
(1)问题:提示“Noconfig file found, using default configuration”
解决办法:生成一个默认的配置文件,控制台里进入Python的script目录,执行:pylint --generate-rcfile > pylintrc,然后再执行:pylint --rcfile=pylint.conf,这样就可以生成pylint.conf配置文件
(2)问题:报告太长。
解决办法:我们可以选择性查阅,加上参数 --reports=n或者更简单写成-rn就行了。
参考资料
Pylint 的常用命令行参数
-h,--help
显示所有帮助信息。
--generate-rcfile
可以使用 pylint --generate-rcfile 来生成一个配置文件示例。可以使用重定向把这个配置文件保存下来用做以后使用。也可以在前面加上其它选项,使这些选项的值被包含在这个产生的配置文件里。如:pylint --persistent=n --generate-rcfile > pylint.conf,查看 pylint.conf,可以看到 persistent=no,而不再是其默认值 yes。
--rcfile=
指定一个配置文件。把使用的配置放在配置文件中,这样不仅规范了自己代码,也可以方便地和别人共享这些规范。
-i , --include-ids=
在输出中包含 message 的 id, 然后通过 pylint --help-msg=来查看这个错误的详细信息,这样可以具体地定位错误。
-r , --reports=
默认是 y, 表示 Pylint 的输出中除了包含源代码分析部分,也包含报告部分。
--files-output=
将每个 module /package 的 message 输出到一个以 pylint_module/package. [txt|html] 命名的文件中,如果有 report 的话,输出到名为 pylint_global.[txt|html] 的文件中。默认是输出到屏幕上不输出到文件里。
-f , --output-format=
设置输出格式。可以选择的格式有 text, parseable, colorized, msvs (visual studio) 和 html, 默认的输出格式是 text。
--disable-msg=
禁止指定 id 的 message. 比如说输出中包含了 W0402 这个 warning 的 message, 如果不希望它在输出中出现,可以使用 --disable-msg= W0402
Pylint 的输出
Pylint的默认输出格式是原始文本(raw text)格式 ,可以通过 -f ,--output-format= 来指定别的输出格式如html等等。在Pylint的输出中有如下两个部分:源代码分析部分和报告部分。
源代码分析部分:
对于每一个 Python 模块,Pylint 的结果中首先显示一些"*"字符 , 后面紧跟模块的名字,然后是一系列的 message, message 的格式如下:
MESSAGE_TYPE: LINE_NUM:[OBJECT:] MESSAGE
[scode type="lblue"]
MESSAGE_TYPE 有如下几种:
(C) 惯例。违反了编码风格标准
(R) 重构。写得非常糟糕的代码。
(W) 警告。某些 Python 特定的问题。
(E) 错误。很可能是代码中的错误。
(F) 致命错误。阻止 Pylint 进一步运行的错误。
[/scode]