用Pylint规范化Python代码,附PyCharm配置
Pylint一个可以检查Python代码错误,执行代码规范的工具。它还可以对代码风格提出建议。
官网:https://pylint.readthedocs.io
pip install pylint
默认情况,Pylint就已经随着Python安装好。在Python的scripts目录下。
找一段小程序试验一下Pylint,程序很简单。
- #!/usr/bin/env python
- # encoding: utf-8
- '''
- Created on 2017年2月4日
- @author: Arthur Guo
- '''
- N = 10
- YHTriangle = []
- for i in range(N): # 行
- YHTriangle.append([])
- if i == 0:
- YHTriangle[i].append(1) #第一行只有 1
- else:
- YHTriangle[i].append(1) #最左元素永远为 1
- YHTriangle[i].append(1) #最右元素永远为 1
- for j in range(1,i): #中间元素
- if i <> 0 and i <> 1:
- YHTriangle[i].insert(j,YHTriangle[i-1][j-1] + YHTriangle[i-1][j])
- for i in range(N):
- print YHTriangle[i]
命令行运行pylint yanghui.py,结果看起来很冗长
- c:\>c:\Python27\Scripts\pylint.exe d:\workspace\PyComm\src\Interviews\yanghui.py
- No config file found, using default configuration
- ************* Module Interviews.yanghui
- C: 19, 0: Exactly one space required after comma
- for j in range(1,i): #中间元素
- ^ (bad-whitespace)
- C: 21, 0: Exactly one space required after comma
- YHTriangle[i].insert(j,YHTriangle[i-1][j-1] + YHTriangle[i-1][j]
- )
- ^ (bad-whitespace)
- C: 23, 0: Final newline missing (missing-final-newline)
- C: 11, 0: Invalid constant name "YHTriangle" (invalid-name)
- Report
- ======
- 13 statements analysed.
- Statistics by type
- ------------------
- +---------+-------+-----------+-----------+------------+---------+
- |type |number |old number |difference |%documented |%badname |
- +=========+=======+===========+===========+============+=========+
- |module |1 |1 |= |100.00 |0.00 |
- +---------+-------+-----------+-----------+------------+---------+
- |class |0 |0 |= |0 |0 |
- +---------+-------+-----------+-----------+------------+---------+
- |method |0 |0 |= |0 |0 |
- +---------+-------+-----------+-----------+------------+---------+
- |function |0 |0 |= |0 |0 |
- +---------+-------+-----------+-----------+------------+---------+
- Raw metrics
- -----------
- +----------+-------+------+---------+-----------+
- |type |number |% |previous |difference |
- +==========+=======+======+=========+===========+
- |code |15 |62.50 |15 |= |
- +----------+-------+------+---------+-----------+
- |docstring |5 |20.83 |5 |= |
- +----------+-------+------+---------+-----------+
- |comment |2 |8.33 |17 |-15.00 |
- +----------+-------+------+---------+-----------+
- |empty |2 |8.33 |3 |-1.00 |
- +----------+-------+------+---------+-----------+
- Duplication
- -----------
- +-------------------------+------+---------+-----------+
- | |now |previous |difference |
- +=========================+======+=========+===========+
- |nb duplicated lines |0 |0 |= |
- +-------------------------+------+---------+-----------+
- |percent duplicated lines |0.000 |0.000 |= |
- +-------------------------+------+---------+-----------+
- Messages by category
- --------------------
- +-----------+-------+---------+-----------+
- |type |number |previous |difference |
- +===========+=======+=========+===========+
- |convention |4 |6 |-2.00 |
- +-----------+-------+---------+-----------+
- |refactor |0 |0 |= |
- +-----------+-------+---------+-----------+
- |warning |0 |0 |= |
- +-----------+-------+---------+-----------+
- |error |0 |0 |= |
- +-----------+-------+---------+-----------+
- Messages
- --------
- +----------------------+------------+
- |message id |occurrences |
- +======================+============+
- |bad-whitespace |2 |
- +----------------------+------------+
- |missing-final-newline |1 |
- +----------------------+------------+
- |invalid-name |1 |
- +----------------------+------------+
- Global evaluation
- -----------------
- Your code has been rated at 6.92/10 (previous run: 5.38/10, +1.54)
‘’‘’Report
=======‘’‘’以上是Pylint对程序的建议,以下都是报告内容。多数时候,我们其实并不想看那么冗长的报告。这时候,体贴的Pylint就让我们屏蔽掉它们。
加上参数 --reports=n 或者更简单写成 -rn 就好了。再看检查结果:
- c:\>c:\Python27\Scripts\pylint.exe --reports=n d:\workspace\PyComm\src\Interview
- s\yanghui.py
- No config file found, using default configuration
- ************* Module Interviews.yanghui
- C: 19, 0: Exactly one space required after comma
- for j in range(1,i): #中间元素
- ^ (bad-whitespace)
- C: 21, 0: Exactly one space required after comma
- YHTriangle[i].insert(j,YHTriangle[i-1][j-1] + YHTriangle[i-1][j]
- )
- ^ (bad-whitespace)
- C: 23, 0: Final newline missing (missing-final-newline)
- C: 11, 0: Invalid constant name "YHTriangle" (invalid-name)
建议分三种:“bad-whitespace”, "missing-final-newline", "invalid-name".
前两个好说,加空格,加空行。但是下面这个怎么破?
- C: 11, 0: Invalid constant name "YHTriangle" (invalid-name)
命名不规范?认为是个constant值? 其实可以把这类问题忽略掉。
“Invalid constant name” 错误号是 C0103,所以加上 --disable=C0103即可。
- c:\>c:\Python27\Scripts\pylint.exe --reports=n --disable=c0103 d:\workspace\PyCo
- mm\src\Interviews\yanghui.py
- 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,说明程序没问题了。
- C:\Python27\Scripts\pylint.exe --reports=n --disable=C0103 D:\PyCharmSpace\test1\test1\hello.py
- No config file found, using default configuration
- Process finished with exit code 0
用Pylint规范化Python代码,附PyCharm配置的更多相关文章
- python自动化第一课 - python安装以及pycharm配置
1.安装python 1.1打开python官网https://www.python.org/downloads/windows/进行下载Python 3.8.0 1.2下载完毕后进行安装,1勾选 A ...
- python代码编辑器PyCharm快捷键补充
个人觉得特别有用的: 替换:Ctrl+R 删除当前行 CTRY Y: 复制当前行:Ctrl+D ALT F7: 查找哪些地方使用了选中的方法. ALT UP: 移到上一个方法 ALT DOWN: 移到 ...
- 如何使用 Pylint 来规范 Python 代码风格
如何使用 Pylint 来规范 Python 代码风格 转载自https://www.ibm.com/developerworks/cn/linux/l-cn-pylint/ Pylint 是什么 ...
- python代码检查工具pylint 让你的python更规范
1.pylint是什么? Pylint 是一个 Python 代码分析工具,它分析 Python 代码中的错误,查找不符合代码风格标准(Pylint 默认使用的代码风格是 PEP 8,具体信息,请参阅 ...
- Python实现扫描作业配置自动化
持续集成平台接入扫描作业是一项繁琐而又需要细致的工作,于是趁着闲暇时间,将代码扫描作业用Python代码实现了配置自动化. 每次配置作业的过程中,都会在checkcode1或者checkcode3上 ...
- PyCharm配置autopep8,自动格式化Python代码
1. 关于PEP 8 PEP 8,Style Guide for Python Code,是Python官方推出编码约定,主要是为了保证 Python 编码的风格一致,提高代码的可读性. 官网地址:h ...
- PyCharm 配置远程python解释器和在本地修改服务器代码
PyCharm 配置远程python解释器和在本地修改服务器代码 最近在学习机器学习的过程中,常常需要将本地写的代码传到GPU服务器中,然后在服务器上运行.之前的做法一直是先在本地写好代码,然后通过F ...
- Python - 使用Pylint检查分析代码
1-简介 Home Page : https://www.pylint.org/ 检查语法错误,是否遵守编码风格标准.潜在的问题等: 支持自定义配置:例如显示或隐藏特定的警告,并且可以通过编写插件来添 ...
- Python 安装和 Pycharm 环境配置
一.Python 简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它 ...
随机推荐
- ubuntu ftp服务器搭建
linux ftp服务器部署 1.sudo apt-get install vsftpd ##下载vsftpd 2.sudo vim /etc/vsftpd.conf ##vsftpd配置文件 ...
- simulink中几个bit型操作模型
bit concat 将两个fix point 数据 结合到一块. bit rotate 循环移位 bit shift 移位 又分逻辑移位和算术移位,逻辑移位不管最高位0或1,统统移0,算术移位会移 ...
- 【转】Eclipse的启动问题【an error has occurred see the log file】
原文网址:http://coderlin.blog.51cto.com/7386328/1275215 方法1: 今天打开Eclipse的时候出现来了一个问题,导致了Eclipse打不开 错误的提示是 ...
- Cluster的日记体系
Cluster的日志体系 Cluster的日志体系: Oracle cluster不像数据库那样,具有丰富的视图.工具可以用来辅助诊断,他的日志和trace文件时唯一的选择.但不想oracle只有al ...
- python-生成测试报告-然后自动发送邮件
前两篇单独介绍了生成测试报告和自动发送邮件,那么现在把两者整合到一起:生成测试报告后然后自动发送邮件,这里只是简单的整合实现功能,其实还可以优化的,先用吧,后面再慢慢优化 先看下目录,其实目录还是一样 ...
- GNU Radio安装教程: Ubuntu14.04 + uhd3.10.0 + gnuradio3.7.10.1
1. 更新和安装依赖项 在编译安装uhd和gnuradio之前,确保已安装所需依赖项.Ubuntu系统运行: sudo apt-get update 安装UHD和GNURadio所需依赖项: On U ...
- Spring Boot Maven 打包可执行Jar文件
本文转载自:http://blog.csdn.net/smilecall/article/details/56288972 Maven pom.xml 必须包含 <packaging>ja ...
- java代码----------实现写出循环
总结:对于循环次数累加.等等总是不知道在哪一行插入 package com.mmm; //输出10个数字中,小于5的数字 public class hai { public static void m ...
- Java-Runoob:Java StringBuffer 类
ylbtech-Java-Runoob:Java StringBuffer 类 1.返回顶部 1. Java StringBuffer 和 StringBuilder 类 当对字符串进行修改的时候,需 ...
- combiner中使用状态模式
mapreduce中的combine过程 hadoop的map过程执行完成后,每一个map都可能会产生大量的本地输出,Combiner的作用就是对map端的输出先做一次合并,减少在map和reduce ...