开发安全、高质量代码的 5 款顶级 Python 工具(编程软件python下载)

开发安全、高质量代码的 5 款顶级 Python 工具(编程软件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 工具(编程软件python下载)

2.Ochrona

这里,我有点私心,因为 Ochrona 是我积极开发并希望 2020 年发布的工具。不过,我还会介绍这个工具的替代方案。

Ochrona 是一款依赖分析和软件组成分析的工具,它可以用来检查你的开源依赖是否存在已知漏洞。这个领域,另一款很流行的开源工具是 pyup.io 的 Safety 。

我认为,Ochrona 比 Safety 更好的地方在于:

  1. 无论是用于开源项目还是商业项目,它都提供免费方案,而且免费方案始终跟进最新的漏洞信息。
  2. 磁盘和 IO 使用非常少。不同于需要拉取整个漏洞数据库的本地工具,它是 SaaS 模式,只需调用一次公开的 API。
  3. 它提供优秀的漏洞数据并且每天更新,并比其他工具提供更多的漏洞详细信息,包括免费用户。

官网下载地址

月下载量: 尚未发布

备选方案: safety 、 snyk (收费)

开发安全、高质量代码的 5 款顶级 Python 工具(编程软件python下载)

3.Bandit

如果必须推荐一个可提高 python 项目安全性的工具,那我推荐 Bandit 。

据悉,Bandit 出自 OpenStack,但现在由 PyCQA 维护。它是一款开源的 SAST(静态应用安全测试)工具,免费、可配置且快速。从某些方面来讲,它就像是关注安全领域的 linter。

Bandit 很适合用来发现问题,比如不安全的配置、已知的不安全模块使用情况等。

官网下载地址

月下载量: 575101

备选方案: pyre 、 pyt 、 dodgy

开发安全、高质量代码的 5 款顶级 Python 工具(编程软件python下载)

4.Black

Black 是一款独特的代码格式化工具。它能自动将你的代码更正为 Black 样式(一个 Pep-8 的超集)。

传统的 linter 通常需要你把代码改为合规代码,而 Black 可以节省不少时间。并且,Black 只需有限的配置,这意味着你如果用过 Black,其他任何项目你都会觉得眼熟。

官网下载地址

月下载量: 1891711

备选方案:flake8、pylint

开发安全、高质量代码的 5 款顶级 Python 工具(编程软件python下载)

5.Mypy

它是python 一个可选的静态类型检查器。 PEP 484 引入 python 的类型提示,Mypy 则利用这些类型提示对项目进行静态类型检查。

Python 依然有动态的 duck 类型,不过,添加静态类型检查能帮你减少测试和调试时间,更早发现错误。

目前,大公司也在跟进 python 的静态类型检查。在 Guido van Rossum 任职期间,Dropbox 用 Mypy 检查了 400 多万行代码。其他的 python 用户,比如 Instagram 也开始做静态类型检查。

官网下载地址

月下载量: 2487228

备选方案: pyre

开发安全、高质量代码的 5 款顶级 Python 工具(编程软件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 工具(编程软件python下载)

将 Flask 升级到一个没有已知漏洞的版本

开发安全、高质量代码的 5 款顶级 Python 工具(编程软件python下载)

修复类型注释,禁用调试模式,规范格式

虽然这个例子只涉及一个 CI 平台,但其实和集成到其他大多数平台的方法都很相似。

下面是一个总的评分表:

开发安全、高质量代码的 5 款顶级 Python 工具(编程软件python下载)

关注我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2023年4月26日 上午9:07
下一篇 2023年4月26日 上午9:17

相关推荐

  • 河南加快推进畜牧产业转型升级

      近日,记者从河南省畜牧局获悉,今年河南省将培育畜牧产业化集群,促进全产业链发展,建立来源稳定、过程可控、质量优质的绿色养殖基地。支持建设一批蛋鸡、肉鸡、奶牛等标准化养殖场,引导…

    科研百科 2022年5月16日
    333
  • 模板 项目跟踪管理系统

    模板项目跟踪管理系统:提高项目管理效率 项目跟踪管理系统是一种可以帮助项目经理和团队成员跟踪项目进度,资源使用情况,任务完成情况的工具。在现代商业环境中,项目跟踪管理系统已经成为一…

    科研百科 2024年12月26日
    0
  • 科研项目检查整改 科研项目整改报告

    科研项目检查整改报告 随着科技的不断发展,科研项目的质量和效率一直是学术界和工业界关注的重点。在完成一项科研项目时,及时发现和改正问题是至关重要的。本文将对科研项目检查整改进行介绍…

    科研百科 2024年8月1日
    68
  • 最简单的变速慢动作教程来了#剪辑(变速视频教程)

    最简单的变速慢动作教程来了#剪辑(变速视频教程) 如何制作变速慢动作视频?原视频中的彭晓越是如何实现的? 制作变速慢动作视频,首先需要使用剪映软件。点击左下角的“剪映”,边看边操作…

    科研百科 2024年3月29日
    61
  • 护士科研项目的申报多少钱

    护士科研项目的申报多少钱 随着科技的不断发展,护士科研项目也在不断地进行着。这些项目旨在提高护士的专业技能和学术水平,同时也为护士们提供了更多的职业发展机会。但是,护士科研项目的申…

    科研百科 2024年4月10日
    64
  • 济宁日报-9月15日 义桥镇:党建项目化 激发基层党建活力(开展党建项目)

    通讯员 刘中山 宋同 今年以来,汶上县义桥镇针对基层党建工作存在的目标任务不具体、工作标准不统一、推动落实不严格等问题,强化党建统领推进“双基”工作,探索实施党建工作项目化管理,走…

    科研百科 2023年7月13日
    190
  • 上海市工会经费使用管理办法

    上海市工会经费使用管理办法 为规范上海市工会经费的使用和管理,根据《中华人民共和国工会法》以及其他相关法律法规,上海市政府制定了《上海市工会经费使用管理办法》。该办法于2019年1…

    科研百科 2024年10月12日
    57
  • 软件 项目管理系统包括

    软件项目管理系统包括了许多有用的功能,可以帮助项目经理更好地管理项目。以下是软件项目管理系统的一些主要功能: 1. 任务分配:软件项目管理系统可以自动将任务分配给适当的团队成员,确…

    科研百科 2024年12月23日
    0
  • 获得 PMP 认证的 10 个 好处(获得pmp证书的人怎么写个人简历)

    为什么每个人都在谈论PMP,获得PMP认证有哪些好处?如果你也想知道,请阅读本文。我们将从有形和无形两个层面讨论获得PMP认证的好处,以及获得这个高含金量证书需要付出哪些努力。 在…

    科研百科 2024年4月25日
    103
  • 计算系统能耗的软件

    计算系统能耗的软件: 优化计算系统的能源利用 随着计算机和信息技术的不断发展,计算系统的能耗问题越来越受到人们的关注。在过去,人们只能通过手动调节计算机的硬件配置和软件设置来降低能…

    科研百科 2024年11月19日
    2