二次開發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__方法
處理意見:確認處理