Pylint 提供了簡單的方式來分析 Python 代碼,其高可配置性很容易使一個部門的人員使用統一的代碼風格。 本文將通過理論介紹和樣本分析闡述如何 Pylint 來規範 Python 代碼
一、Pylint 是什麼
Pylint 是一個 Python 程式碼分析工具,它分析 Python 代碼中的錯誤,尋找不符合代碼風格標準和有潛在問題的代碼。
Pylint 是一個 Python 工具,除了平常程式碼分析工具的作用之外,它提供了更多的功能:如檢查一行代碼的長度,變數名是否符合命名標準,一個聲明過的介面是否被真正實現等等。
Pylint 的一個很大的好處是它的高可配置性,高可定製性,並且可以很容易寫小外掛程式來添加功能。
如果運行兩次 Pylint,它會同時顯示出當前和上次的運行結果,從而可以看出代碼品質是否得到了改進。 目前在 eclipse 的 pydev 外掛程式中也整合了 Pylint。
二、Pylint 在 Linux 上的安裝
1. 在 Linux 上,首先安裝 Python 的包(高於版本 2.2),並在環境變數 $PATH 中添加 Python 可執行檔的路徑。
2. 下載 Pylint、logilab-astng (version >= 0.14) 和 logilab-common (version >= 0.13) 的包 , 使用 tar zxvf *.tar.gz解壓縮這些包。
3. 依次進入 logilab-astng、logilab-common 和 Pylint 解開的檔案夾中,運行命令 Python setup.py install來安裝。
4. 安裝完成後,就可以通過 pylint [options] module_or_package來調用 Pylint 了。
三、 Pylint 在 Windows 上的安裝
1. 安裝 Python 的包(高於版本 2.2),按右鍵案頭上的我的電腦表徵圖,選擇屬性,進階,環境變數,在 $PATH 中添加 Python 的安裝路徑,如 C:\Python26\。
2. 使用解壓縮工具解壓縮所有的包。
3. 開啟命令列視窗,使用 cd依次進入 logilab-astng、logilab-common 和 Pylint 解開的檔案夾中,運行命令 python setup.py install來安裝。
4. 安裝完成後,在 Python 的安裝路徑下出現一個 Scripts 檔案夾,裡麵包含一些 bat 指令碼,如 pylint.bat 等。
5. 為了使調用 pylint.bat 的時候不需要輸入完整路徑,在 Python 的安裝目錄下建立 pylint.bat 的重新導向檔案,這是一個純文字檔案 pylint.bat,裡麵包含 pylint.bat 的實際路徑,如:C:\Python26\Scripts\pylint.bat。
6. 安裝完成後,可以通過 pylint [options] module_or_package來調用 Pylint 了。
四、 pylint使用
使用 Pylint 對一個模組 module.py 進行代碼檢查:
1. 進入這個模組所在的檔案夾,運行
pylint [options] module.py
這種調用方式是一直可以工作的,因為當前的工作目錄會被自動加入 Python 的路徑中。
2. 不進入模組所在的檔案夾,運行
pylint [options] directory/module.py
這種調用方式當如下條件滿足的時候是可以工作的:directory 是個 Python 包 ( 比如包含一個 __init__.py 檔案 ),或者 directory 被加入了 Python 的搜尋路徑中。
使用 Pylint 對一個包 pakage 進行代碼檢查:
1. 進入這個包所在檔案夾,運行
pylint [options] pakage
這種調用方式是一直可以工作的,因為當前的工作目錄會被自動加入 Python 的路徑中。
2. 不進入包所在的檔案夾,運行
pylint [options] directory/ pakage
這種情況下當如下條件滿足的時候是可以工作的:directory 被加入了 Python 的路徑中。比如在 Linux 上,export PYTHONPATH=$PYTHONPATH: directory。
此外,對於安裝了 tkinter 包的機器,可以使用命令 pylint-gui開啟一個簡單的 GUI 介面,在這裡輸入模組或者包的名字 ( 規則同命令列 ), 點擊 Run,Pylint 的輸出會在 GUI 中顯示。
五、 Pylint常用命令列參數
-h,--help : 顯示所有協助資訊。
--generate-rcfile :可以使用 pylint --generate-rcfile 來產生一個設定檔樣本。可以使用重新導向把這個設定檔儲存下來用做以後使用。也可以在前面加上其它選項,使這些選項的值被包含在這個產生的設定檔裡。 如:pylint -- persistent=n --generate-rcfile > pylint.conf, 查看 pylint.conf,可以看到 persistent=no,而不再是其預設值 yes。
--rcfile=<file> :指定一個設定檔。把使用的配置放在設定檔中,這樣不僅規範了自己代碼,也可以方便地和別人共用這些規範。
-i <y_or_n>, --include-ids=<y_or_n> :在輸出中包含 message 的 id, 然後通過 pylint --help-msg=<msg-id>來 查看這個錯誤的詳細資料,這樣可以具體地定位錯誤。
-r <y_or_n>, --reports=<y_or_n> :預設是 y, 表示 Pylint 的輸出中除了包含原始碼分析部分,也包含報告部分。
--files-output=<y_or_n> :將每個 module /package 的 message 輸出到一個以 pylint_module/package. [txt|html] 命名的檔案中,如果有 report 的話,輸出到名為 pylint_global.[txt|html] 的檔案中。預設是輸出到屏 幕上不輸出到檔案裡。
-f <format>, --output-format=<format> :設定輸出格式。可以選擇的格式有 text, parseable, colorized, msvs (visual studio) 和 html, 預設的輸出格式是 text。
--disable-msg= <msg ids> :禁止指定 id 的 message. 比如說輸出中包含了 W0402 這個 warning 的 message, 如果不希望它在輸出中出現,可以使用 --disable-msg= W0402
六、Pylint的輸出
Pylint的預設輸出格式是原始文本(raw text)格式 ,可以通過 -f <format>,--output-format=<format> 來指定別的輸出格式如html等等。
在Pylint的輸出中有如下兩個部分:原始碼分析部分和報告部分。
原始碼分析部分:
對於每一個 Python 模組,Pylint 的結果中首先顯示一些"*"字元 , 後面緊跟模組的名字,然後是一系列的 message, message 的格式如下: __MESSAGE_TYPE: LINE_NUM:[OBJECT:] MESSAGE__ MESSAGE_TYPE 有如下幾種:
(C) 慣例。違反了編碼風格標準
(R) 重構。寫得非常糟糕的代碼。
(W) 警告。某些 Python 特定的問題。
(E) 錯誤。很可能是代碼中的錯誤。
(F) 致命錯誤。阻止 Pylint 進一步啟動並執行錯誤。
報告部分:
在原始碼分析結束後面,會有一系列的報告,每個報告關注於項目的某些方面,如每種類別的 message 的數目,模組的依賴關係等等。
具體來說,報告中會包含如下的方面: 檢查的 module 的個數。 對於每個 module, 錯誤和警告在其中所佔的百分比。
比如有兩個 module A 和 B, 如果一共檢查出來 4 個錯誤,1 個錯誤是在 A 中,3 個錯誤是在 B 中,那麼 A 的錯誤的百分比是 25%, B 的錯誤的百分比是 75%。 錯誤,警告的總數量。
python中pylint使用方法
在Eclipse IDE 下, 開啟 Window->Preferences... 對話方塊,從右側的樹形列表中選擇“ PyDev”->“Interpreter Python”, 點擊New按鈕,從Python的安裝路徑下選擇Python.exe,然後會彈出一個對話方塊讓你勾選System PYTHONPATH,我是都選了,應該無所謂。最後點Ok,退出。
一、進行Django項目的開發配置
1、建立PyDev Project
Eclipse IDE——>File——>New——>Other——>Pydev——>選擇Pydev Project——>起一個項目的名稱(例如demo)——>選擇路徑,如E:/work——>選擇適合你的Python版本(我的是2.5)——>將下面的勾去掉,不要建立src檔案——>Finish。
2、建立Django Project
(1)django-admin.py startproject demo。(貌似不能在命令列直接用django-admin.py,而必須使用C:/Python26/Scripts/django-admin.py,後來才知道要把C:/Python26/Scripts加入Path.)
(2)把產生的Django項目目錄拷貝到Eclipse剛剛建立的項目下的目錄裡。返回剛才的Elicpse IDE——>在PyDev Package視圖中重新整理剛建立的項目demo,即可看到Django項目工程。添加、刪除檔案和目錄的操作都可以通過右鍵菜單來完成。
3、Django項目工程配置
(1)project 右鍵——>屬性——>選擇PyDev-PYTHONPATH——>add source folder(選擇專案檔路徑添加到項目代碼——>確定 。
(2)對Pydev項目進行配置:
選擇Pydev的項目名稱——>Run as——>Open Run Dialog——>Python Run——>右鍵New——>在Main面板中寫入項目名稱,通過Browse載入項目名稱和Main Module,Main Module選擇manage.py——>在Augement面板中,arguments中輸入 runserver --noreload,下面的working directory加入你的base directory。
二、進行Django項目的調試配置
跟開發配置差不多,但是添加了兩個環境變數,具體操作如下:
(1)project 右鍵 ——>Debug as ——>open Debug dialog。
(2)main視窗中選擇manage.py所在的project,Main Module選擇manage.py所在檔案位置。
(3)arguments中輸入 runserver --noreload。
(4)Environment中添加DJANGO_SETTINGS_MODULE=settings ,PYTHONPATH=$PWD。
三、配置pylint
1、pylint簡介
pylint主要用來分析你的PY代碼,尋找出其中的錯誤,並給出提示,並且還可以為你提出一些編碼風格的提示的一個PYTHON模組。總之,它的作用是使得你的代碼更加的接近 PEP 008 (http://www.python.org/dev/peps/pep-0008/) Title: Style Guide for Python Code 中所描述的代碼風格,使你的代碼統一併更加可讀。
2、下載並安裝pylint
pylint, logilab-astng, logilab-common ,安裝方式跟安裝django的方式都是一樣的。也就是直接使用
python setup.py install 即可。
3、配置使用pylint
(1)Window -> preferences -> Pydev -> Pylint,選中"Use pylint?",再輸入lint.py的地址,例如"C:/Python25/Lib/site-packages/pylint/lint.py"
(2)並在最後編輯框中添加參數,以限制pylint的輸出。
--persistent=n --comment=n
--disable-msg=C0103,C0301,W0312,W0511,W0232,E1101
(3)Project->Properties->PyDev-PYTHONPATH增添項目的源檔案目錄到"Project Source Folders"。
(4)選中Project->Build Automatically,這樣儲存修改時pylint就會自動check項目中的代碼,否則就要用Ctrl+B手動build並觸發pylint。
參考文檔:
http://pydev.org/manual_adv_pylint.html