1. Python虚拟环境:Poetry
一个类似Pipenv的Python虚拟环境和依赖管理的工具,据称改善了一些Pipenv的问题。对我而言,主要看重了Poetry可以对Python库打包的功能。毕竟对我而言书写 setup.py
并不是一件很让人愉快的事情。
2. 代码静态扫描:Flake8
Flake8使用起来非常简单,不用这么配置就可以直接使用,之后检查过程中遇到自己不需要的规则,加个例外就好。
Flake8支持插件,通过添加插件还可以让Flake8功能变的更为强大。
[2023-02 update]: 我的代码检查工具切换成了 ruff 。速度要快很多,且同样易用。
3. 代码自动格式化:Black
写代码时,我个人会尽量遵守 PEP8
,但难保团队中有些人代码写的有些随意。为保证编码风格的统一,在代码提交前统一由Black对代码镜像格式化。自动格式化之后的代码可能会少了那么一点个性,但为了统一还是值得的。
4. Import规则检查&格式化工具:isort
Black不会对Python 的 import 语句进行排序和分段,这个工作就交给isort来做了。
5. 类型检查:Mypy
长久以来Python作为脚本语言,程序里没有类型信息,很多本可在编译阶段发现的问题被保留到运行时。Python在3.5之后开始支持 Type Hint
了。利用Mypy可以利用这些类型信息对程序进行校验。
6. 单元测试:pytest
相比 unittest
,pytest使用上更为方便。更为重要的是pytest兼容 unittest,似乎没有什么理由来拒绝pytest。
7. 测试覆盖率:Coverage.py
代码覆盖率测试工具好像也没有第二个选择。
8. pre-commit
在 git commit
时调用flake8进行代码检查,调用black对代码进行格式化等操作。利用pre-commit从源头上杜绝有人把不合格的代码提交到代码库。
9. Docker、Gitlab-CI、GitHub Action、Travis CI
CI服务可根据自己的实际情况进行选择