Python之深入解析Vulture如何一键找出项目中所有无效的代码
生活随笔
收集整理的這篇文章主要介紹了
Python之深入解析Vulture如何一键找出项目中所有无效的代码
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、前言
- Vulture 可以在Python程序中查找未使用的代碼,這對于清理和查找大型項目(代碼庫)中的錯誤非常有用。
- 不過由于 Python 的動態(tài)特性,像 Vulture 這樣的靜態(tài)代碼分析器很可能會遺漏一些無效代碼,此外,可能會將僅被隱式調(diào)用的代碼標記為未使用。
- 盡管如此,Vulture 對于提升代碼質(zhì)量來說可能是一個非常有用的工具:
-
- 速度快:靜態(tài)代碼分析;
-
- 靠譜:已測試;
-
- 兼容強:與 pyflies 相輔相成,具有相同的輸出語法;
-
- 可排序:可以按大小對未使用的類和函數(shù)進行排序 --sort-by-size;
-
- 支持 Python>=3.6。
二、依賴安裝
- Windows 環(huán)境 打開 Cmd (開始-運行-CMD);
- MacOS 環(huán)境 打開 Terminal (command+空格輸入Terminal);
- 如果使用的是 VSCode 編輯器或 Pycharm,可以直接使用界面下方的 Terminal:
三、Vulture 的用法
- 可以直接使用命令行工具運行 vulture:
- 如果 vulture 沒有被加進環(huán)境變量(如 Windows 系統(tǒng)下不會自動加到環(huán)境變量中),建議使用 python -m 的方式調(diào)用 vulture。
- 可見,命令的參數(shù)可以是 Python 文件或目錄。對于每個目錄,Vulture 會分析所有包含的 *.py文件。
- Vulture 為每個無效代碼塊分配一個置信度值,100% 的置信度值意味著百分百的無效代碼。
- 找到并刪除無效代碼后,再次運行 Vulture,因為它可能會發(fā)現(xiàn)更多的無效代碼。
- 舉個例子,參考下述代碼:
- 調(diào)用 vulture:
- 輸出效果如下:
- Vulture 正確地將“os”和“message”報告為未使用,但未能檢測到實際使用了“greet”。處理此類誤報的推薦方法是創(chuàng)建一個白名單 Python 文件。
四、處理誤報
- 當 Vulture 錯誤地將代碼塊報告為未使用時,有多種選擇來抑制誤報。
- 如果修復誤報也可以使其它用戶受益,請?zhí)峤粏栴}報告。
① 白名單
- 推薦的選項是將報告為“未使用的”已使用代碼添加到 Python 模塊,并將其添加到掃描路徑列表中。要自動獲取這樣的白名單,請傳遞 --make-whitelist 給 Vulture:
- 請注意,生成的 whitelist.py 文件將包含有效的 Python 語法,但為了讓 Python 能夠運行它,通常需要進行一些修改。
② 忽略文件
- 如果要忽略整個文件或目錄,請使用 --exclude 參數(shù)如 --exclude *settings.py,docs/ 。
③ Flake8 noqa 注釋
- 為了與 flake8 兼容,Vulture 支持 F401 和 F841錯誤代碼以忽略未使用的導入 ( # noqa: F401 ) 和未使用的局部變量 ( # noqa: F841 )。
- 但是,建議使用白名單而不是 noqa 注釋,因為 noqa 注釋會給代碼增加視覺干擾并使其更難閱讀。
④ 忽略名稱
- 還可以使用 --ignore-names foo*,ba[rz] 讓 Vulture 忽略所有以 foo 開頭的及 bar 和 baz 的名稱。
- 此外,–ignore-decorators 選項可用于忽略用給定裝飾器裝飾的函數(shù)。這在 Flask 項目中很有幫助,可以在其中使用裝飾器 --ignore-decorators “@app.route” 忽略所有 @app.route 函數(shù)。
- 建議使用白名單代替 --ignore-names 或 --ignore-decorators ,因為白名單在傳遞給 Vulture 時會自動檢查語法正確性。
總結(jié)
以上是生活随笔為你收集整理的Python之深入解析Vulture如何一键找出项目中所有无效的代码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS之深入解析预乘透明度Premult
- 下一篇: RxSwift之深入解析如何创建观察者O