使用 Snyk Open Source Advisor 查詢 Python 套件「健康度」
snyk.io/advisor/python
無論是工作或個人的開發,在為專案實作新的功能時,一個需求可能會有複數個套件選項可供選擇。這時候如何取捨,需要考慮的因素很多,而套件的「健康度」無疑是重要指標之一。
在 Python 中,這些套件幾乎都是開源的,而 Snyk Open Source Advisor(以下簡稱:Snyk Advisor)就是一個幫助你查詢、確認開源專案健康度的服務!
採用一個缺乏維護者與使用者的開源套件,可能會讓後續的開發付出代價,如果存在涉及資安的 bug,那麼最壞的情況恐怕不止是砍掉重練而已。(這段話聽起來好像廣告業配的台詞 🤣)
所以,在研究新功能的實踐而必須採用新的套件時,只要不是公認的主流選項,或是我不熟悉的領域,我一定會去這個網站查一下套件的健康度。依照網站的計算公式,專案更新愈頻繁、社群活躍度愈高、愈多人採用,健康度就愈高。
我會以它給出的健康度分數,來決定是否採用一個新套件。
舉例而言,當 Django 專案想要以 ORM 方式存取 MongoDB 資料時,就需要能有支援 MongoDB ORM 的套件(package)。依照 MongoDB 官方的文件說明,最常見的三種選擇如下:
其中 PyMongo 是後二者的底層依賴套件,一定會安裝,可以忽略不計。
因為是 Web 開發,我們實際需要的是類似 Django ORM 的 Object-Document Mapper 框架,後兩者都符合這個要求,所以得要從選項 2、3 中選擇其一。
選擇的時候,需要考慮專案的具體需求、整合成本、套件通用性等重要方向,當然也包括套件本身的健康度。
如果套件專案健康度不到 80 分,除非只是個人開發且別無選擇,否則我基本不考慮!
此時用 Snyk Advisor 查了一下,MongoEngine 得分為優秀的 94 分,而 Djongo 僅得到 71 分,單憑這個指標,我顯然就不會選擇 Djongo 了——至於它這個「充滿巧思」的套件命名,我實在不忍吐槽 😅
除了 Python,Snyk Advisor 還支援 Node.js、Go 以及 Docker(可用來查詢 image 的健康度)。
總之,非常推薦使用 Snyk Advisor,作為專案開發時的套件選擇參考。
相關文章