python 编程规范工具_转--Python编码规范的工具----pylint

pylint是一个检测编码规范的工具.它的规范来自于某PEP文档.

编码规范的好处,大家google去.pylint的用法也非常简单.

[guozw@centos5 bin]$ pylint

Server.py

然后它就会输出一份文档

154表示第154行.

前面的C表示提示信息的level,就像python的logging模块分为ERROR,WARNING,INFO,DEBUG等等.同样pylint将提示分为了5个level

[R] 可重构

[C] 不合乎PEP文档标准

[W] 警告

[E] 错误

[F] 致命错误

C:154: Line too long (87/80)

就表示不合乎PEP文档标准.该行有87个字符,标准规定不超过80个字符

C: 1: Missing

docstring

没有写docstring

F: 18: Unable to import

'XmlConfig'

致命错误,不能导入XmlConfig模块,当然这个就不要相信它了.它没有环境变量,自然找不到那个模块了.你自己知道导入该模块没有问题就行了.

W: 51:MyImplementation: Class has no __init__

method

警告 类没有写__init__方法

C: 53:MyImplementation.loadProjects: Invalid

name "loadProjects" (should match

[a-z_][a-z0-9_]{2,30}$)

方法的命名不合乎规范.按照它后面给的正则表达式来看.标准的函数(方法)命名应该”都是小写字母,至少要3个字符”

W: 53:MyImplementation.loadProjects: Unused

argument 'current'

警告 第53行 没有使用的参数current. 当然这个也不要信它. 代码中这个函数的参数为默认参数.

W: 63:MyImplementation.doGuoguan: Unused

variable 'ret'

警告 没有使用过的变量

C: 52: Operator not preceded by a

space

tasks=[]

^

操作符后面要空格 标准写法是

tasks = []

R: 59:MyImplementation.doGuoguan: Method could

be a function

W: 7: Unused import

threading

W: 4: Unused import

time

警告 你导入了threading和time模块 但是没有使用它们

C: 65:MyImplementation.sendMsg: Comma not

followed by a space

def

sendMsg(self,lotid,expect,openCode,current=None):

逗号后面要跟空格 标准写法应该是

def sendMsg(self, lotid, expect, openCode,

current=None):

Statistics by type

------------------

+---------+-------+-----------+-----------+------------+---------+

|type |number |old number |difference |%documented |�dname

|

+=========+=======+===========+===========+============+=========+

|module |1 |NC |NC |0.00 |0.00 |

+---------+-------+-----------+-----------+------------+---------+

|class |2 |NC |NC |0.00 |0.00 |

+---------+-------+-----------+-----------+------------+---------+

|method |10 |NC |NC |10.00 |80.00 |

+---------+-------+-----------+-----------+------------+---------+

|function

|3 |NC |NC |0.00 |0.00 |

+---------+-------+-----------+-----------+------------+---------+

统计:你的这个py文件中有

1个module,

2个class,

10个method ,

3个function

Raw metrics

-----------

+----------+-------+------+---------+-----------+

|type |number

|% |previous |difference |

+==========+=======+======+=========+===========+

|code |135 |95.74

|NC |NC |

+----------+-------+------+---------+-----------+

|docstring

|0 |0.00 |NC |NC |

+----------+-------+------+---------+-----------+

|comment |3 |2.13 |NC |NC |

+----------+-------+------+---------+-----------+

|empty |3 |2.13 |NC |NC |

+----------+-------+------+---------+-----------+

代码行数:135行,占所有行数的95.74%(这个比例太高了,说明这份py文件的注释做的不够好)

Docstring行数 0行.

注释行数: 13行 占所有行数的2.13%

空行行数: 3行 占所有护士的2.13%

Global evaluation

-----------------

Your code has been rated at

5.09/10

最后有个总体评分:

满分10分,这份py文件拿了5.09分.

最后给出一份得9.31分的py文件(ps:这是一个用多线程Condition信号量实现的生产者消费者问题)

#coding:gbk

'''

条件变量测试代码

'''

import threading

import time

PRODUCT = None

_CONDITION_ =

threading.Condition()

def produce():

'''生产者'''

global PRODUCT

if _CONDITION_.acquire():

while True:

if PRODUCT is None:

print

'produce...'

PRODUCT = 'anything'

#通知消费者,商品已经生产了

_CONDITION_.notify()

#等待通知

_CONDITION_.wait()

time.sleep(2)

def consume():

'''消费者'''

global PRODUCT

if _CONDITION_.acquire():

while True:

if PRODUCT is not None:

print 'consume...'

PRODUCT = None

#通知生产者,商品已经被我吃了

_CONDITION_.notify()

#等待通知

_CONDITION_.wait()

time.sleep(2)

THREAD_ = threading.Thread(target =

produce)

THREAD_2 = threading.Thread(target =

consume)

THREAD_.start()

THREAD_2.start()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值