日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python之深入解析Vulture如何一键找出项目中所有无效的代码

發布時間:2024/5/21 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python之深入解析Vulture如何一键找出项目中所有无效的代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

  • Vulture 可以在Python程序中查找未使用的代碼,這對于清理和查找大型項目(代碼庫)中的錯誤非常有用。
  • 不過由于 Python 的動態特性,像 Vulture 這樣的靜態代碼分析器很可能會遺漏一些無效代碼,此外,可能會將僅被隱式調用的代碼標記為未使用。
  • 盡管如此,Vulture 對于提升代碼質量來說可能是一個非常有用的工具:
    • 速度快:靜態代碼分析;
    • 靠譜:已測試;
    • 兼容強:與 pyflies 相輔相成,具有相同的輸出語法;
    • 可排序:可以按大小對未使用的類和函數進行排序 --sort-by-size;
    • 支持 Python>=3.6。

二、依賴安裝

  • Windows 環境 打開 Cmd (開始-運行-CMD);
  • MacOS 環境 打開 Terminal (command+空格輸入Terminal);
  • 如果使用的是 VSCode 編輯器或 Pycharm,可以直接使用界面下方的 Terminal:
pip install vulture

三、Vulture 的用法

  • 可以直接使用命令行工具運行 vulture:
vulture myscript.py # 或者 python3 -m vulture myscript.py # 或者 vulture myscript.py mypackage/ # 或者 vulture myscript.py --min-confidence 100 # 只報告100%可能的無效代碼
  • 如果 vulture 沒有被加進環境變量(如 Windows 系統下不會自動加到環境變量中),建議使用 python -m 的方式調用 vulture。
  • 可見,命令的參數可以是 Python 文件或目錄。對于每個目錄,Vulture 會分析所有包含的 *.py文件。
  • Vulture 為每個無效代碼塊分配一個置信度值,100% 的置信度值意味著百分百的無效代碼。
  • 找到并刪除無效代碼后,再次運行 Vulture,因為它可能會發現更多的無效代碼。
  • 舉個例子,參考下述代碼:
import osclass Greeter:def greet(self):print("Hi")def hello_world():message = "Hello, world!"greeter = Greeter()greet_func = getattr(greeter, "greet")greet_func()if __name__ == "__main__":hello_world()
  • 調用 vulture:
vulture dead_code.py # 或者 python -m vulture dead_code.py
  • 輸出效果如下:
dead_code.py:1: unused import 'os' (90% confidence) dead_code.py:4: unused function 'greet' (60% confidence) dead_code.py:8: unused variable 'message' (60% confidence)
  • Vulture 正確地將“os”和“message”報告為未使用,但未能檢測到實際使用了“greet”。處理此類誤報的推薦方法是創建一個白名單 Python 文件。

四、處理誤報

  • 當 Vulture 錯誤地將代碼塊報告為未使用時,有多種選擇來抑制誤報。
  • 如果修復誤報也可以使其它用戶受益,請提交問題報告。

① 白名單

  • 推薦的選項是將報告為“未使用的”已使用代碼添加到 Python 模塊,并將其添加到掃描路徑列表中。要自動獲取這樣的白名單,請傳遞 --make-whitelist 給 Vulture:
vulture mydir --make-whitelist > whitelist.py vulture mydir whitelist.py
  • 請注意,生成的 whitelist.py 文件將包含有效的 Python 語法,但為了讓 Python 能夠運行它,通常需要進行一些修改。

② 忽略文件

  • 如果要忽略整個文件或目錄,請使用 --exclude 參數如 --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 選項可用于忽略用給定裝飾器裝飾的函數。這在 Flask 項目中很有幫助,可以在其中使用裝飾器 --ignore-decorators “@app.route” 忽略所有 @app.route 函數。
  • 建議使用白名單代替 --ignore-names 或 --ignore-decorators ,因為白名單在傳遞給 Vulture 時會自動檢查語法正確性。

總結

以上是生活随笔為你收集整理的Python之深入解析Vulture如何一键找出项目中所有无效的代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。