Python代码分析工具Pylint使用教程

什么是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.exelocation为本项目单独的环境(一般是项目下面venv文件夹),一般情况下Pycharm已经为我们选好了,按照下图设置即可,点击Create创建工程。

新建pylint工程

选择File-->setting进入设置菜单。

进入设置菜单

按下图所示,找到对应栏目,如果Project interpreter显示``,请自己选择python环境安装地址。

pycharm安装Pylint

点击右边的+号,在上方输入Pylint,然后点击install package进行安装。安装完成后,继续在设置菜单,选中External Tools栏目,右边有个+号箭头,点击进入。

External Tools

完成如下的设置:(这里先按照如下设置即可,具体参数后面说)

pylint设置

[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,输入文件名字即可。

新建Python文件

输入一段程序,这里我们输入以下代码进行测试:

测试代码

在项目上单击右键,选择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]

更多内容请参考:
1.如何使用 Pylint 来规范 Python 代码风格
2.Pylint官网

本站所有资源均由网友共享,仅用于参考学习用,请勿直接商用,如有侵权,请联系网站客服删除相关资源。若由于商用引起版权纠纷,一切责任均由使用者承担。
Geekerstar » Python代码分析工具Pylint使用教程

发表评论