跳转到主要内容

防止异常处理反模式

项目描述

防止Python中的异常处理反模式

Actions Status PyPI Semantic Release GitHub Downloads Code style: black try/except style: tryceratops Follow guilatrova

受此博客文章启发。我在这里描述了此工具的构建过程

“对于那些喜欢恐龙 🦖 和整洁的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...]

example

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

违规

所有违规及其描述都可以在 文档 中找到。

自动修复支持

截至目前,自动修复仅支持以下违规行为:TRY200TRY201TRY400

忽略违规

如果您想在特定文件中忽略违规行为,您可以选择以下任一操作:

  • 在您想忽略的文件的顶部添加带有 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

展示你的风格

try/except style: tryceratops

将此精美的徽章添加到您项目的 README.md 文件中

[![try/except style: tryceratops](https://img.shields.io/badge/try%2Fexcept%20style-tryceratops%20%F0%9F%A6%96%E2%9C%A8-black)](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 查看散列)

上传时间 Python 3

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面