防止异常处理反模式
项目描述
防止Python中的异常处理反模式
受此博客文章启发。我在这里描述了此工具的构建过程。
“对于那些喜欢恐龙 🦖 和整洁的try/except ✨块的人来说。”
摘要
安装和使用
安装
pip install tryceratops
或者
poetry add -D tryceratops
使用
tryceratops [filename or dir...]
您可以通过运行以下命令启用实验性分析器:
tryceratops --experimental [filename or dir...]
您可以通过使用以下命令多次重复忽略特定违规: --ignore TRYXXX
tryceratops --ignore TRY201 --ignore TRY202 [filename or dir...]
您可以通过使用以下命令多次重复排除目录: --exclude dir/path
tryceratops --exclude tests --exclude .venv [filename or dir...]
您还可以自动修复一些违规
tryceratops --autofix [filename or dir...]
flake8
插件
🦖 Tryceratops 也是 flake8
的插件,因此您可以使用
❯ flake8 --select TRY src/tests/samples/violations/call_raise_vanilla.py
src/tests/samples/violations/call_raise_vanilla.py:13:9: TRY002 Create your own exception
src/tests/samples/violations/call_raise_vanilla.py:13:9: TRY003 Avoid specifying long messages outside the exception class
src/tests/samples/violations/call_raise_vanilla.py:21:9: TRY201 Simply use 'raise' without specifying exception object again
违规
所有违规及其描述都可以在 文档 中找到。
自动修复支持
截至目前,自动修复仅支持以下违规行为:TRY200、TRY201 和 TRY400。
忽略违规
如果您想在特定文件中忽略违规行为,您可以选择以下任一操作:
- 在您想忽略的文件的顶部添加带有
noqa
的注释 - 在您想忽略的行上添加带有
noqa
的注释 - 在您想忽略的行上添加带有
noqa: CODE
的注释来忽略特定违规行为
示例
def verbose_reraise_1():
try:
a = 1
except Exception as ex:
raise ex # noqa: TRY202
配置
您可以通过设置 pyproject.toml
文件来设置规则。这可以避免反复使用相同的 CLI 标志,并有助于定义您项目的结构。
示例
[tool.tryceratops]
exclude = ["samples"]
ignore = ["TRY002", "TRY200", "TRY300"]
experimental = false
check_pickable = false
allowed_base_exceptions = ["MyAppBase"]
CLI 标志始终覆盖配置文件。
pre-commit
如果您想使用 pre-commit,请添加以下内容
- repo: https://github.com/guilatrova/tryceratops
rev: v2.4.0
hooks:
- id: tryceratops
展示你的风格
将此精美的徽章添加到您项目的 README.md
文件中
[](https://github.com/guilatrova/tryceratops)
额外资源
如果您想了解更多关于以下内容的信息
贡献
感谢您考虑让 Tryceratops 对每个人来说都变得更好!
请参阅 贡献文档。
变更日志
查看 变更日志。
许可
MIT
鸣谢
感谢上帝的灵感 🙌 ☁️ ☀️
感谢 black 项目提供的见解。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
tryceratops-2.4.0.tar.gz (20.6 kB 查看散列)
构建分发
tryceratops-2.4.0-py3-none-any.whl (27.3 kB 查看散列)