「InfoQ」开发安全、高质量代码的 5 款顶级 Python 工具
作者丨Andrew Scott
译者|李梦
策划|万佳
为提高代码的质量、安全性和可维护性 , 软件工程师每天会用到无数工具 。
我会列出一些自己最喜欢的 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 是绝佳的工具 。
官网下载地址:https://pipenv.kennethreitz.org/en/latest/
月下载量:2111976
备选方案:poetry 、 virtualenv 、 venv
2.Ochrona
这里 , 我有点私心 , 因为 Ochrona 是我积极开发并希望 2020 年发布的工具 。 不过 , 我还会介绍这个工具的替代方案 。
Ochrona 是一款依赖分析和软件组成分析的工具 , 它可以用来检查你的开源依赖是否存在已知漏洞 。 这个领域 , 另一款很流行的开源工具是 pyup.io 的 Safety。
我认为 , Ochrona 比 Safety 更好的地方在于:
无论是用于开源项目还是商业项目 , 它都提供免费方案 , 而且免费方案始终跟进最新的漏洞信息 。
磁盘和 IO 使用非常少 。 不同于需要拉取整个漏洞数据库的本地工具 , 它是 SaaS 模式 , 只需调用一次公开的 API 。
它提供优秀的漏洞数据并且每天更新 , 并比其他工具提供更多的漏洞详细信息 , 包括免费用户 。
官网下载地址:https://ochrona.dev/
月下载量:尚未发布
备选方案:safety 、 snyk (收费)
3.Bandit
如果必须推荐一个可提高 python 项目安全性的工具 , 那我推荐 Bandit。
据悉 , Bandit 出自 OpenStack , 但现在由 PyCQA 维护 。 它是一款开源的 SAST(静态应用安全测试)工具 , 免费、可配置且快速 。 从某些方面来讲 , 它就像是关注安全领域的 linter 。
Bandit 很适合用来发现问题 , 比如不安全的配置、已知的不安全模块使用情况等 。
官网下载地址:https://github.com/PyCQA/bandit
月下载量:575101
备选方案:pyre 、 pyt 、 dodgy
4.Black
Black 是一款独特的代码格式化工具 。 它能自动将你的代码更正为 Black 样式(一个 Pep-8 的超集) 。
传统的 linter 通常需要你把代码改为合规代码 , 而 Black 可以节省不少时间 。 并且 , Black 只需有限的配置 , 这意味着你如果用过 Black , 其他任何项目你都会觉得眼熟 。
官网下载地址:https://github.com/psf/black
月下载量:1891711
备选方案:flake8、pylint
5.Mypy
它是 python 一个可选的静态类型检查器 。 PEP 484 引入 python 的类型提示 , Mypy 则利用这些类型提示对项目进行静态类型检查 。
Python 依然有动态的 duck 类型 , 不过 , 添加静态类型检查能帮你减少测试和调试时间 , 更早发现错误 。
推荐阅读
- 『浏览器』奇安信可信浏览器正式发布 打造信创生态安全纽带
- 『强国兵器』中方协同美方开发AI工具,英国人:只有中国能做到,抗疫强力辅助
- 「央视网」北约秘书长:北约军事同盟的安全没有因新冠病毒而减弱
- #小梁先生呢#安全感应该不错,搞笑GIF:有个能打的女朋友
- 戮默科技■助力企业数字化升级,戮默科技深挖软件开发核心
- 「车家号」汽车座椅除了舒适性还有什么功能?汽车座椅还涉及到安全问题!
- 云安全联盟区块链安全工作组启动,e签宝助力推动区块链安全发展
- 蛋蛋懂车■西青开发区部分路段通行有变,4月4日起
- 你的NMN安全吗?基因港、赛立复、瑞维拓的NMN安全吗?
- 福特汽车推出道路边缘探测功能,进一步保证行车安全
