日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

開發安全、高質量代碼的 5 款頂級 Python 工具

原創 InfoQ 2020-03-12 16:12:50
開發安全、高質量代碼的 5 款頂級 Python 工具

 

為提高代碼的質量、安全性和可維護性,軟件工程師每天會用到無數工具。

我會列出一些自己最喜歡的 python 工具,并從易用性(是否易于安裝、運行和自動化)、質量影響(能否阻止可預見的 bug)、可維護性影響(是否讓工作更輕松)和安全性影響(能否發現并阻止安全性問題)對它們進行打分,以供讀者參考。

并且,我還將介紹如何將這些工具全包含進 CI pipeline,從而實現自動化和高效。

1.Pipenv

它是為Python 設計的開發管理和依賴管理的工具,最早由 Requests 的作者 Kenneth Reitz 編寫。

如果你用 python 做過一段時間的開發,那么管理環境,你可能用過 virtualenv 或 venv ;依賴管理可能用過較可靠的pip freeze > requirements.txt。

大多數情況下,這完全沒問題。但是,我發現 pipenv 更方便,且很強大,加上它通過Pipfile和Pipfile.lock近乎去掉固定依賴的做法,很大程度上替代了requirements.txt,從而帶來更可靠的部署。

不過,我對 pipenv 的未來有點擔憂,因為 Python 基金會已擱置對 pip 的改進。而且,pipenv 在 2019 年缺乏實質性進展。但是,我仍然認為,對大多數 python 用戶來說,pipenv 是絕佳的工具。

官網下載地址

月下載量: 2111976

備選方案: poetry 、 virtualenv 、 venv

開發安全、高質量代碼的 5 款頂級 Python 工具

 

2.Ochrona

這里,我有點私心,因為 Ochrona 是我積極開發并希望 2020 年發布的工具。不過,我還會介紹這個工具的替代方案。

Ochrona 是一款依賴分析和軟件組成分析的工具,它可以用來檢查你的開源依賴是否存在已知漏洞。這個領域,另一款很流行的開源工具是 pyup.io 的 Safety 。

我認為,Ochrona 比 Safety 更好的地方在于:

  1. 無論是用于開源項目還是商業項目,它都提供免費方案,而且免費方案始終跟進最新的漏洞信息。
  2. 磁盤和 IO 使用非常少。不同于需要拉取整個漏洞數據庫的本地工具,它是 SaaS 模式,只需調用一次公開的 API。
  3. 它提供優秀的漏洞數據并且每天更新,并比其他工具提供更多的漏洞詳細信息,包括免費用戶。

官網下載地址

月下載量: 尚未發布

備選方案: safety 、 snyk (收費)

開發安全、高質量代碼的 5 款頂級 Python 工具

 

3.Bandit

如果必須推薦一個可提高 python 項目安全性的工具,那我推薦 Bandit 。

據悉,Bandit 出自 OpenStack,但現在由 PyCQA 維護。它是一款開源的 SAST(靜態應用安全測試)工具,免費、可配置且快速。從某些方面來講,它就像是關注安全領域的 linter。

Bandit 很適合用來發現問題,比如不安全的配置、已知的不安全模塊使用情況等。

官網下載地址

月下載量: 575101

備選方案: pyre 、 pyt 、 dodgy

開發安全、高質量代碼的 5 款頂級 Python 工具

 

4.Black

Black 是一款獨特的代碼格式化工具。它能自動將你的代碼更正為 Black 樣式(一個 Pep-8 的超集)。

傳統的 linter 通常需要你把代碼改為合規代碼,而 Black 可以節省不少時間。并且,Black 只需有限的配置,這意味著你如果用過 Black,其他任何項目你都會覺得眼熟。

官網下載地址

月下載量: 1891711

備選方案:flake8、pylint

開發安全、高質量代碼的 5 款頂級 Python 工具

 

5.Mypy

它是python 一個可選的靜態類型檢查器。 PEP 484 引入 python 的類型提示,Mypy 則利用這些類型提示對項目進行靜態類型檢查。

Python 依然有動態的 duck 類型,不過,添加靜態類型檢查能幫你減少測試和調試時間,更早發現錯誤。

目前,大公司也在跟進 python 的靜態類型檢查。在 Guido van Rossum 任職期間,Dropbox 用 Mypy 檢查了 400 多萬行代碼。其他的 python 用戶,比如 Instagram 也開始做靜態類型檢查。

官網下載地址

月下載量: 2487228

備選方案: pyre

開發安全、高質量代碼的 5 款頂級 Python 工具

 

全部集成到一起

這個例子種,我會用到 Travis-CI ,配置其他 CI 工具的過程與之類似相似,只是語法上會有差異。這里,我用一個簡單、不安全且有問題的 flask 應用作為例子。

App.py文件如下:

復制代碼

from flask import Flask 	 app = Flask(__name__) 	@app.route('/<name>') def hello_world(name: str) -> str: 	return hello_name(name)def hello_name(name: str) -> int:	return f"hello, {name}"	if __name__ == '__main__': 	app.run(debug=True)

Pipfile如下:

復制代碼

[[source]]name = "pypi"url = "https://pypi.org/simple"verify_ssl = true[dev-packages]bandit = "*"v = {editable = true,version = "*"}black = "*"mypy = "*"ochrona = "*"[packages]flask = "==0.12.2"[requires]python_version = "3.7"

最后在根目錄下創建一個.travis.yml文件,內容如下:

復制代碼

language: pythonpython:  - 3.7install:  - pip install -U pip  - pip install pipenv  - pipenv install --devscript:  - bandit ./*  - black --check .  - ochrona  - mypy .

如果查看這里的構建,你會發現每個工具都標出錯誤或指出需修改的地方。那么,我們來做一些修正,如這個 PR 所示,構建就可以通過。

開發安全、高質量代碼的 5 款頂級 Python 工具

 

將 Flask 升級到一個沒有已知漏洞的版本

開發安全、高質量代碼的 5 款頂級 Python 工具

 

修復類型注釋,禁用調試模式,規范格式

雖然這個例子只涉及一個 CI 平臺,但其實和集成到其他大多數平臺的方法都很相似。

下面是一個總的評分表:

開發安全、高質量代碼的 5 款頂級 Python 工具

 

 


 

分享到:
標簽:Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定