Pylint一个可以检查Python代码错误,执行代码规范的工具。它还可以对代码风格提出建议。

官网:https://pylint.readthedocs.io

pip install pylint

默认情况,Pylint就已经随着Python安装好。在Python的scripts目录下。

找一段小程序试验一下Pylint,程序很简单。

  1. #!/usr/bin/env python
  2. # encoding: utf-8
  3. '''
  4. Created on 2017年2月4日
  5. @author: Arthur Guo
  6. '''
  7. N = 10
  8. YHTriangle = []
  9. for i in range(N):  # 行
  10. YHTriangle.append([])
  11. if i == 0:
  12. YHTriangle[i].append(1) #第一行只有 1
  13. else:
  14. YHTriangle[i].append(1) #最左元素永远为 1
  15. YHTriangle[i].append(1) #最右元素永远为 1
  16. for j in range(1,i):    #中间元素
  17. if i <> 0 and i <> 1:
  18. YHTriangle[i].insert(j,YHTriangle[i-1][j-1] + YHTriangle[i-1][j])
  19. for i in range(N):
  20. print YHTriangle[i]

命令行运行pylint yanghui.py,结果看起来很冗长

  1. c:\>c:\Python27\Scripts\pylint.exe d:\workspace\PyComm\src\Interviews\yanghui.py
  2. No config file found, using default configuration
  3. ************* Module Interviews.yanghui
  4. C: 19, 0: Exactly one space required after comma
  5. for j in range(1,i):    #中间元素
  6. ^ (bad-whitespace)
  7. C: 21, 0: Exactly one space required after comma
  8. YHTriangle[i].insert(j,YHTriangle[i-1][j-1] + YHTriangle[i-1][j]
  9. )
  10. ^ (bad-whitespace)
  11. C: 23, 0: Final newline missing (missing-final-newline)
  12. C: 11, 0: Invalid constant name "YHTriangle" (invalid-name)
  13. Report
  14. ======
  15. 13 statements analysed.
  16. Statistics by type
  17. ------------------
  18. +---------+-------+-----------+-----------+------------+---------+
  19. |type     |number |old number |difference |%documented |%badname |
  20. +=========+=======+===========+===========+============+=========+
  21. |module   |1      |1          |=          |100.00      |0.00     |
  22. +---------+-------+-----------+-----------+------------+---------+
  23. |class    |0      |0          |=          |0           |0        |
  24. +---------+-------+-----------+-----------+------------+---------+
  25. |method   |0      |0          |=          |0           |0        |
  26. +---------+-------+-----------+-----------+------------+---------+
  27. |function |0      |0          |=          |0           |0        |
  28. +---------+-------+-----------+-----------+------------+---------+
  29. Raw metrics
  30. -----------
  31. +----------+-------+------+---------+-----------+
  32. |type      |number |%     |previous |difference |
  33. +==========+=======+======+=========+===========+
  34. |code      |15     |62.50 |15       |=          |
  35. +----------+-------+------+---------+-----------+
  36. |docstring |5      |20.83 |5        |=          |
  37. +----------+-------+------+---------+-----------+
  38. |comment   |2      |8.33  |17       |-15.00     |
  39. +----------+-------+------+---------+-----------+
  40. |empty     |2      |8.33  |3        |-1.00      |
  41. +----------+-------+------+---------+-----------+
  42. Duplication
  43. -----------
  44. +-------------------------+------+---------+-----------+
  45. |                         |now   |previous |difference |
  46. +=========================+======+=========+===========+
  47. |nb duplicated lines      |0     |0        |=          |
  48. +-------------------------+------+---------+-----------+
  49. |percent duplicated lines |0.000 |0.000    |=          |
  50. +-------------------------+------+---------+-----------+
  51. Messages by category
  52. --------------------
  53. +-----------+-------+---------+-----------+
  54. |type       |number |previous |difference |
  55. +===========+=======+=========+===========+
  56. |convention |4      |6        |-2.00      |
  57. +-----------+-------+---------+-----------+
  58. |refactor   |0      |0        |=          |
  59. +-----------+-------+---------+-----------+
  60. |warning    |0      |0        |=          |
  61. +-----------+-------+---------+-----------+
  62. |error      |0      |0        |=          |
  63. +-----------+-------+---------+-----------+
  64. Messages
  65. --------
  66. +----------------------+------------+
  67. |message id            |occurrences |
  68. +======================+============+
  69. |bad-whitespace        |2           |
  70. +----------------------+------------+
  71. |missing-final-newline |1           |
  72. +----------------------+------------+
  73. |invalid-name          |1           |
  74. +----------------------+------------+
  75. Global evaluation
  76. -----------------
  77. Your code has been rated at 6.92/10 (previous run: 5.38/10, +1.54)

‘’‘’Report

=======‘’‘’以上是Pylint对程序的建议,以下都是报告内容。多数时候,我们其实并不想看那么冗长的报告。这时候,体贴的Pylint就让我们屏蔽掉它们。

加上参数 --reports=n 或者更简单写成 -rn 就好了。再看检查结果:

  1. c:\>c:\Python27\Scripts\pylint.exe --reports=n d:\workspace\PyComm\src\Interview
  2. s\yanghui.py
  3. No config file found, using default configuration
  4. ************* Module Interviews.yanghui
  5. C: 19, 0: Exactly one space required after comma
  6. for j in range(1,i):    #中间元素
  7. ^ (bad-whitespace)
  8. C: 21, 0: Exactly one space required after comma
  9. YHTriangle[i].insert(j,YHTriangle[i-1][j-1] + YHTriangle[i-1][j]
  10. )
  11. ^ (bad-whitespace)
  12. C: 23, 0: Final newline missing (missing-final-newline)
  13. C: 11, 0: Invalid constant name "YHTriangle" (invalid-name)

建议分三种:“bad-whitespace”, "missing-final-newline", "invalid-name".

前两个好说,加空格,加空行。但是下面这个怎么破?

  1. C: 11, 0: Invalid constant name "YHTriangle" (invalid-name)

命名不规范?认为是个constant值? 其实可以把这类问题忽略掉。

“Invalid constant name” 错误号是 C0103,所以加上 --disable=C0103即可。

  1. c:\>c:\Python27\Scripts\pylint.exe --reports=n --disable=c0103 d:\workspace\PyCo
  2. mm\src\Interviews\yanghui.py
  3. No config file found, using default configuration

没输出就是说名没问题了。

当然,还有更多的参数可以供选择。

=======================华丽丽的分割线===============================

平时写Python,我们几乎都不直接用命令行,而是用集成的IDE工具。比如猫哥常用的PyCharm。

Pylint官方文档提了可以支持PyCharm不过太简略了。

实际操作是这样的:

进入PyCharm,从菜单栏,依次进入: File -> Settings -> Tools -> External Tools。

“+”,进行添加。需要填写的部分分别是:“Name”,“Tool Settings -> Programs”、“Tool
Settings -> Parameters”、“Tool Settings -> Working directory”。

注意:

“Parameters”里其它参数不管怎么写,必须在最后加上$FilePath$,“Working directory”里必须写
$FileDir

另外,需要再添加“Output Filter”,在上图中间靠右。填写内容的“Regular expression to match output”,必须是:$FILE_PATH$:$LINE$:
最后那个是冒号。

配置完毕,选择一个Python程序,右键点击,快捷菜单中会有“Extensions Tools -> Pylint”,点击运行即可。输出结果在执行程序结果的窗口(IDE下半部分)。

如果看到返回值为0,说明程序没问题了。

    1. C:\Python27\Scripts\pylint.exe --reports=n --disable=C0103 D:\PyCharmSpace\test1\test1\hello.py
    2. No config file found, using default configuration
    3. Process finished with exit code 0

用Pylint规范化Python代码,附PyCharm配置的更多相关文章

  1. python自动化第一课 - python安装以及pycharm配置

    1.安装python 1.1打开python官网https://www.python.org/downloads/windows/进行下载Python 3.8.0 1.2下载完毕后进行安装,1勾选 A ...

  2. python代码编辑器PyCharm快捷键补充

    个人觉得特别有用的: 替换:Ctrl+R 删除当前行 CTRY Y: 复制当前行:Ctrl+D ALT F7: 查找哪些地方使用了选中的方法. ALT UP: 移到上一个方法 ALT DOWN: 移到 ...

  3. 如何使用 Pylint 来规范 Python 代码风格

    如何使用 Pylint 来规范 Python 代码风格 转载自https://www.ibm.com/developerworks/cn/linux/l-cn-pylint/   Pylint 是什么 ...

  4. python代码检查工具pylint 让你的python更规范

    1.pylint是什么? Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是 PEP 8,具体信息,请参阅 ...

  5. Python实现扫描作业配置自动化

    持续集成平台接入扫描作业是一项繁琐而又需要细致的工作,于是趁着闲暇时间,将代码扫描作业用Python代码实现了配置自动化. 每次配置作业的过程中,都会在checkcode1或者checkcode3上 ...

  6. PyCharm配置autopep8,自动格式化Python代码

    1. 关于PEP 8 PEP 8,Style Guide for Python Code,是Python官方推出编码约定,主要是为了保证 Python 编码的风格一致,提高代码的可读性. 官网地址:h ...

  7. PyCharm 配置远程python解释器和在本地修改服务器代码

    PyCharm 配置远程python解释器和在本地修改服务器代码 最近在学习机器学习的过程中,常常需要将本地写的代码传到GPU服务器中,然后在服务器上运行.之前的做法一直是先在本地写好代码,然后通过F ...

  8. Python - 使用Pylint检查分析代码

    1-简介 Home Page : https://www.pylint.org/ 检查语法错误,是否遵守编码风格标准.潜在的问题等: 支持自定义配置:例如显示或隐藏特定的警告,并且可以通过编写插件来添 ...

  9. Python 安装和 Pycharm 环境配置

    一.Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它 ...

随机推荐

  1. decorator and @property

    @property 首先, 它是个装饰器. 其次, 看到这个东西, 意味着它下面的函数可以被当作一个属性(成员变量)来看到.  通常, 这个函数会return点什么东西. 重点讲讲装饰器: 1, py ...

  2. python模块--json \ pickle \ shelve \ XML模块

    一.json模块 之前学习过的eval内置方法可以将一个字符串转成一个python对象,不过eval方法时有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,e ...

  3. Mathtype启动失败与Microsoft公式编辑器Equation的问题处理案例

    最近写毕业论文需要使用Mathtype,安装成功后,启动Word,使用Mathtype,出现各种问题. 遇到的问题: 1.弹出“用于创建对象的程序是Equation.您的计算机尚未安装此程序.若要编辑 ...

  4. Android照片墙完整版,完美结合LruCache和DiskLruCache

    转载地址:http://blog.csdn.net/guolin_blog/article/details/34093441#comments 在上一篇文章当中,我们学习了DiskLruCache的概 ...

  5. Extjs tree2

    本案例中记载了Extjs中一棵树的形成以及各种案例集成,并详解介绍了TreePanel.TreeNode和AsyncTreeNode这三个主要对象.纯属个人业余时间玩玩的,整理出来,方便以后查看. J ...

  6. MySQL Join算法与调优白皮书(三)

    Batched Key Access Join Index Nested-Loop Join虽好,但是通过辅助索引进行链接后需要回表,这里需要大量的随机I/O操作.若能优化随机I/O,那么就能极大的提 ...

  7. mac 第一次安装mysql 5.7.12 不知道root 密码的解决办法

    搞了2个晚上,这个必须记录一下 1.    先从系统偏好设置里 把 mysql 停掉 2.    打开mac 命令行工具,sudo su 以管理员身份运行命令 3.    cd /usr/local/ ...

  8. 斗地主AI

    斗地主AI设计 一.牌型         1 火箭:大小王在一起的牌型,即双王牌,此牌型最大,什么牌型都可以打.         2 炸弹:相同点数的四张牌在一起的牌型,比如四条A.除火箭外,它可以打 ...

  9. 编译hostapd时,出现错误:/usr/bin/ld: cannot find -lnl

    book@ubuntu:/work/project/wifi/04.hostapd/hostapd-2.0/hostapd$ make /usr/bin/ld: cannot find -lnl co ...

  10. fir 窗口设计法

    加窗的原因.对于理想的低通滤波器H(exp(jw)),其h(n)是无限长序列.这是可以证明的.因此为了得到有限长的h(n)就需要截断,而这个过程就是加窗.由于h(n)截断即其频率响应就和理想的低通滤波 ...