推荐一些维护大型 Python 项目的工具

栏目: Python · 发布时间: 5年前

内容简介:github 地址:介绍github 地址:

github 地址: github.com/pypa/pipenv

介绍 pipenv 的文章很多了,我就不多细说了,可以参考下面这篇优秀的文章:

推荐一些维护大型 Python 项目的工具

style & linting : flake8

github 地址: github.com/PyCQA/flake…

文档地址: flake8.pycqa.org/en/latest/i…

基本使用方法:

检查整个项目:

flake8 path/to/your_project/
复制代码

检查单个文件:

flake8 path/to/your_file.py 
复制代码

检测某个特定类型的 flag,比如我想检查一下哪些 try except 没有指定具体的 Exception 类型:

flake8 --select E722 . | more
复制代码
推荐一些维护大型 Python 项目的工具

详细的有哪些 flag 可以在这里查看: flake8.pycqa.org/en/latest/u…

flake8配置文件

文档在: flake8.pycqa.org/en/latest/u…

可以添加在项目根目录的 tox.inisetup.cfg.flake8 文件。

[flake8]
ignore = D203
exclude =
    # No need to traverse our git directory
    .git,
    # There's no value in checking cache directories
    __pycache__,
    # The conf file is mostly autogenerated, ignore it
    docs/source/conf.py,
    # The old directory contains Flake8 2.0
    old,
    # This contains our built documentation
    build,
    # This contains builds of flake8 that we don't want to check
    dist
max-complexity = 10
复制代码

就等价于:

flake8 --ignore D203 \
    --exclude .git,__pycache__,docs/source/conf.py,old,build,dist \
    --max-complexity 10
复制代码

pre-commit hooks

pre-commit 的文档可见: pre-commit.com/#pre-commit…

示例:把下面这个配置添加到 .pre-commit-config.yaml

-   repo: https://gitlab.com/pycqa/flake8
    rev: ''  # pick a git hash / tag to point to
    hooks:
    -   id: flake8
复制代码

code coverage : coverage.py

github 地址: github.com/nedbat/cove…

简单介绍一下什么是 code coverage

Code coverage is a measurement of how many lines/blocks/arcs of your code are executed while the automated tests are running.来源于此。

就是你运行自动化测试的时候,哪些代码行、块真正被执行了,哪些没有。是衡量 unittest 全面程度的一个重要指标。

直接用 pip就能安装: pip install coverage

比如在 django 中:

coverage run --source='.' manage.py test
coverage html
复制代码

就会在项目根目录的 htmlcov/ 目录生成很多 HTML 文件,在 htmldov/ 目录下运行http-server (or whatever you like),就能看到所有文件的统计结果了:

推荐一些维护大型 Python 项目的工具

点开某个文件,就能看到具体哪些行在 ./manage.py test 的时候被执行了:

推荐一些维护大型 Python 项目的工具

如果你只是想看一下简要的信息,可以用 coverage report

区分线上线下环境配置:python-dotenv

github 地址: github.com/theskumar/p…

简单来说就是把配置信息放到一个单独的配置文件里面(比如 .env ),和代码解耦。

这个我在上一篇文章中详细说到过,只不过用的是 python-decouple ,但是思想都是一样的。这里就不讲了。

推荐一些维护大型 Python 项目的工具

安全漏洞检测:bandit

github 地址: github.com/PyCQA/bandi…

基本用法(-r表示检查当前目录下所有文件):

bandit -r . | more
复制代码
推荐一些维护大型 Python 项目的工具

能够定位到具体的那一行,还有最有的文档链接。比如这里检测到了 pseudo-random generators ,它给出了对应的文档地址: bandit.readthedocs.io/en/latest/b…

最后面还有一个总结情况:

推荐一些维护大型 Python 项目的工具

bandit 还有一个特定的配置文件,请看官方文档。

第三方依赖漏洞检测 : safety

github 地址: github.com/pyupio/safe…

bindit 检查的是你自己的代码,而 safety 检查的是按照的第三方依赖。

safety check 
复制代码
推荐一些维护大型 Python 项目的工具

这里检测出了 django 有一个编号ID为 36769 的安全漏洞。

该编号对应的详情可以在 这个文件 里面查看。CVE 编号可以在这个网站查到。

推荐一些维护大型 Python 项目的工具

对应的 django 官方说明位于: www.djangoproject.com/weblog/2019… 。指的是 django.views.defaults.page_not_found() 这个方法,攻击者有可能会在404页面插入特定内容。

比如一个默认的404页面,之前是这样的:会把path /hello 显示出来。

推荐一些维护大型 Python 项目的工具

如果攻击者把 /hello 改一下:

推荐一些维护大型 Python 项目的工具

就有可能诱导用户点击钓鱼网站。

上诉两张图片来源于: 关于Django漏洞CVE-2019-3498的评论

pre-commit

pre-commit 就是一些钩子 bash 脚本,在执行特定 git 操作的时候可以运行这些脚本。比如你可以在 commit或者 push之前运行一下 flake8banditsafety 这些工具。

推荐一些维护大型 Python 项目的工具

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Vim实用技巧

Vim实用技巧

[英] Drew Neil / 杨源、车文隆 / 人民邮电出版社 / 2014-5-1 / 59.00元

vim是一款功能丰富而强大的文本编辑器,其代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中得到非常广泛的使用。vim能够大大提高程序员的工作效率。对于vim高手来说,vim能以与思考同步的速度编辑文本。同时,学习和熟练使用vim又有一定的难度。 《vim实用技巧》为那些想要提升自己的程序员编写,阅读本书是熟练地掌握高超的vim技巧的必由之路。全书共21章,包括121个技巧。每一章......一起来看看 《Vim实用技巧》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

html转js在线工具
html转js在线工具

html转js在线工具