内容简介:github 地址:介绍github 地址:
github 地址: github.com/pypa/pipenv
介绍 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 复制代码
详细的有哪些 flag 可以在这里查看: flake8.pycqa.org/en/latest/u… 。
flake8配置文件
文档在: flake8.pycqa.org/en/latest/u…
可以添加在项目根目录的 tox.ini
、 setup.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),就能看到所有文件的统计结果了:
点开某个文件,就能看到具体哪些行在 ./manage.py test
的时候被执行了:
如果你只是想看一下简要的信息,可以用 coverage report
。
区分线上线下环境配置:python-dotenv
github 地址: github.com/theskumar/p…
简单来说就是把配置信息放到一个单独的配置文件里面(比如 .env
),和代码解耦。
这个我在上一篇文章中详细说到过,只不过用的是 python-decouple
,但是思想都是一样的。这里就不讲了。
安全漏洞检测:bandit
github 地址: github.com/PyCQA/bandi…
基本用法(-r表示检查当前目录下所有文件):
bandit -r . | more 复制代码
能够定位到具体的那一行,还有最有的文档链接。比如这里检测到了 pseudo-random generators
,它给出了对应的文档地址: bandit.readthedocs.io/en/latest/b…
最后面还有一个总结情况:
bandit 还有一个特定的配置文件,请看官方文档。
第三方依赖漏洞检测 : safety
github 地址: github.com/pyupio/safe…
bindit 检查的是你自己的代码,而 safety 检查的是按照的第三方依赖。
safety check 复制代码
这里检测出了 django
有一个编号ID为 36769
的安全漏洞。
该编号对应的详情可以在 这个文件 里面查看。CVE 编号可以在这个网站查到。
对应的 django 官方说明位于: www.djangoproject.com/weblog/2019… 。指的是 django.views.defaults.page_not_found()
这个方法,攻击者有可能会在404页面插入特定内容。
比如一个默认的404页面,之前是这样的:会把path /hello
显示出来。
如果攻击者把 /hello
改一下:
就有可能诱导用户点击钓鱼网站。
上诉两张图片来源于: 关于Django漏洞CVE-2019-3498的评论
pre-commit
pre-commit 就是一些钩子 bash 脚本,在执行特定 git 操作的时候可以运行这些脚本。比如你可以在 commit或者 push之前运行一下 flake8
、 bandit
和 safety
这些工具。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Docusaurus 1.0.13 发布,易于维护的静态网站创建工具
- Docusaurus 1.2.1 发布,易于维护的静态网站创建工具
- guns-lite 将所有表增加维护人员和维护时间信息
- 如何编写无法维护的代码
- Debian 包维护者辞职
- 从 VantCompoent 谈 小程序维护
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。