pylint高頻警告錯誤的緣由及處理建議

  二次開發Python代碼中的警告(warning)與錯誤(Error)的緣由分析及處理建議。python

  按出現的頻次排序,越靠前則出現的次數越多。express

  建議使用analyze_pylint.py代碼來執行pylint命令及分析報告,而後參照生成的csv文件及本文檔進行修改,代碼:less

  Warningide

  W0614(unused-wildcard-import)函數

  緣由分析:b.py文件中import 了sys,os等,當a.py中from b import * 時,若是sys在a中沒有使用,則有此警告oop

  處理意見:import時不使用*ui

  W0611(unused-import)spa

  緣由分析: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__方法

  處理意見:確認處理

相關文章
相關標籤/搜索