温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

pylint高频警告错误的原因及处理建议

发布时间:2020-06-10 04:20:10 来源:网络 阅读:2822 作者:nineteens 栏目:编程语言

  二次开发Python代码中的警告(warning)与错误(Error)的原因分析及处理建议。

  按出现的频次排序,越靠前则出现的次数越多。

  建议使用analyze_pylint.py代码来执行pylint命令及分析报告,然后参照生成的csv文件及本文档进行修改,代码:

  Warning

  W0614(unused-wildcard-import)

  原因分析:b.py文件中import 了sys,os等,当a.py中from b import * 时,如果sys在a中没有使用,则有此警告

  处理意见:import时不使用*

  W0611(unused-import)

  原因分析:import后未使用

  处理意见:先解决所有的import * ,然后再处理该警告。

  W0212(protected-access)

  原因分析:直接使用了保护变量

  处理意见:保护变量不直接使用,增加获取变量的方法

  W0621(redefined-outer-name)

  原因分析:和__main__中的变量重名

  处理意见:需要把__main__中的内容定义为一个main函数

  W0613(unused-argument)

  原因分析:变量未使用

  处理意见:可能是保留,后面可能会使用。暂不修改

  W0702(bare-except)

  原因分析:直接使用了try..except..,没有捕获具体的异常

  处理意见:明确捕获哪些异常有困难。暂不修改

  W0612(unused-variable)

  原因分析:定义了变量却没有使用

  处理意见:首先确认是否真的不需要,如果等号后的内容需要,则把等号前的删掉;如果是需要占位,则使用下划线

  W0622(redefined-builtin)

  原因分析:变量名等与系统内置的变量重复

  处理意见:避免与系统内置的名称重复

  W0311(bad-indentation)

  原因分析:缩进问题

  处理意见:建议缩进使用四个空格,不使用tab或三个空格等

  W0511(fixme)

  原因分析:# todo 未实现

  处理意见:慢慢实现

  W0105(pointless-string-statement)

  原因分析:代码中间无意义的字符串

  处理意见:若是注释代码,则用# 号或者删除;如果是doc_string就放在开始处

  W0102(dangerous-default-value)

  原因分析:使用了可变对象作为默认参数

  处理意见:不要使用可变对象作为默认参数

  W0122(exec-used)

  原因分析:使用了exec

  处理意见:避免使用exec

  W1401(anomalous-backslash-in-string)

  原因分析:含"\“的字符可能缺少前缀r

  处理意见:如果存在“\”,则在字符串前加r

  W0201(attribute-defined-outside-init)

  原因分析:显式的设置了一个初始化时不存在的属性

  处理意见:不要显式的去设置一个不存在的属性,在__init__函数中设置

  W0301(unnecessary-semicolon)

  原因分析:行末尾加了;

  处理意见:python代码行尾不需要加;

  W0312(mixed-indentation)

  原因分析:缩进使用了tab

  处理意见:使用四个空格,不使用tab

  W0401(wildcard-import)

  原因分析:import时使用了*

  处理意见:import时不使用*

  W0640(cell-var-from-loop)

  原因分析:部分变量在循环中定义

  处理意见:将定义提取到循环外

  W0404(reimported)

  原因分析:重复定义

  处理意见:处理

  W0107(unnecessary-pass)

  原因分析:无意义的pass;部分尚未定义的函数直接使用了pass

  处理意见:对于未定义的函数建议使用return None,不使用pass

  W0123(eval-used)

  原因分析:使用了eval

  处理意见:尽量不使用eval

  W0108(unnecessary-lambda)

  原因分析:部分简单的不需要使用lambda

  处理意见:简单的比如直接可使用int()等就不要使用lambda

  W0211(bad-staticmethod-argument)

  原因分析:staticmethod不需要self,cls参数;如果是类函数,则需要

  处理意见:确认并修改

  W0143(comparison-with-callable)

  原因分析:判断是否是同一个函数时提示是否遗漏括号

  处理意见:判断是否是同一个函数,建议使用is,不使用==

  W0632(unbalanced-tuple-unpacking)

  原因分析:类似于left, right = args[-2:]

  处理意见:看是否能够显示的声明。。。

  W0109(duplicate-key)

  原因分析:key重复

  处理意见:确认并修改

  W0631(undefined-loop-variable)

  原因分析:在循环外使用循环变量,可能导致变量未定义

  处理意见:确认并修改

  W0703(broad-except)

  原因分析:直接捕获了所有的Exception

  处理意见:暂不处理

  W0106(expression-not-assigned)

  原因分析:表达式的值未赋值出去

  处理意见:确认并修改

  W0120(useless-else-on-loop)

  原因分析:Else clause on loop without a break statement (useless-else-on-loop)

  for i in L:

  pass:无锡人流医院××× http://mobile.wxbhnkyy120.com/

  else:

  return None

  处理意见:待确认

  Error

  E1101(no-member)

  原因分析:使用元类

  处理意见:建议在类中定义一个类变量(静态变量)

  E0602(undefined-variable)

  原因分析:未定义变量

  处理意见:需处理

  E0401(import-error)

  原因分析:对于函数内部添加路径再import的操作,静态检查会报无法导入

  处理意见:考虑修改为__import__

  E0102(function-redefined)

  原因分析:有可能是import *引入的问题

  处理意见:若确实重复则修改

  E1136(unsubscriptable-object)

  原因分析:检查对象是否有__getitem__()方法

  处理意见:检查对象是否有__getitem__()方法

  E1120(no-value-for-parameter)

  原因分析:定义时参数与调用时传入的参数个数不一致

  处理意见:处理修改代码

  E0213(no-self-argument)

  原因分析:类方法第一个参数未命名为self,而命名为了cls等

  处理意见:建议命名为self

  E0001(syntax-error)

  原因分析:语法错误

  处理意见:修改

  E1137(unsupported-assignment-operation)

  原因分析:使用[]符号时需要对象支持__setitem__方法

  处理意见:确认处理


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI