代码分析工具python_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.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]

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值