python靜態程式碼檢查
我們知道python是一門指令碼語言,不像C#/Java等編譯型語言可以在編譯階段就報出程式碼錯誤,指令碼語言往往需要在執行期執行到這段程式碼時才會丟擲程式碼錯誤。
那麼在實際商業專案中使用python開發,我們是怎樣做靜態程式碼檢查的呢?
首先在我們專案組推薦使用vscode做為python開發工具,本文我介紹下我們做的python程式碼靜態審查來減少執行期的py指令碼錯誤。
- 安裝vscode外掛:save and run,下載地址:Save and Run - Visual Studio Marketplace
- 通過pip install pyflakes 這個模組,安裝後就有pyflakes.exe
- 在vscode中配置檔案(settings.json)中增加這幾行配置
"saveAndRun": {
"commands": [
{
"match":"\\.py$",
"isAsync":true,
"cmd":"python C:\\Python27\\Scripts\\pyflakes.exe ${file}"
}
]
},
- 在vscode中編寫完py指令碼,在儲存時就會提示你當前檔案是否有指令碼錯誤了。
驗證一下
語法報錯
程式碼縮排在python中是語法,如果在純文字中編輯程式碼或複製貼上的程式碼,很大概率會出現縮排不對從而在執行時報錯,通過上面的設定後在從儲存py檔案時就會報錯出來。
PS E:\Code\python_study> python C:\Python27\Scripts\pyflakes.exe e:\Code\python_study\hello_netease.py
e:\Code\python_study\hello_netease.py:10:1: unexpected indent
print ("hello netease")
^
python用法報錯
比如這個py檔案中有一處錯誤,在儲存py時就會提示你指令碼有錯誤,這是因為global變數不能在初始化時賦值。
e:\Code\python_study\true-false邏輯控制符.py:9:17: invalid syntax
global log_func = 1
^