一个 Python 代码检查工具,将 PyFlakes、pycodestyle 和 McCabe 整合为单一命令。
dlint-py/dlint
基于 flake8 的 Python 插件,用于检测不安全和不良的编码写法。
- Star
- 178
- Fork
- 18
- 未关闭 Issue
- 23
- 最近提交
- 18天前
这是什么?
Dlint 是一款面向 Python 的代码检查工具,用于发现容易引发安全问题或 bug 的不安全写法和不良编码习惯。它以 flake8 插件的形式运行,沿用 flake8 的命令行参数和配置方式。每条规则都有以 DUO 开头的编号,报告中会给出文件、行号和简短说明,例如标记 exec 的使用。
项目通过 pip 从 PyPI 安装,使用 `flake8 --select=DUO` 即可只运行 Dlint 的规则。编辑器集成复用 flake8 现有的插件,支持 Vim、Emacs、Sublime Text、PyCharm、Atom 和 VS Code 等。开发者还可以按照命名约定,将模块名以 `dlint_plugin_` 开头来编写自定义规则。
核心功能
- 01检测 exec 等不安全的 Python 写法,规则以 DUO 编号标识。
- 02基于 flake8 构建,沿用其命令行参数和配置。
- 03可在命令行中检查单个文件或整个目录。
- 04兼容主流编辑器的 flake8 集成,可在编辑器中直接显示结果。
- 05支持通过命名约定加载自定义规则插件。
适用场景
- 在 Python 项目的 CI 流水线中加入安全相关的代码检查。
- 审查遗留 Python 代码中 exec 等有风险的写法。
- 通过自定义插件落实团队自有的安全编码规范。
快速上手
- 1
从 PyPI 安装 Dlint
python -m pip install dlint - 2
通过 flake8 对文件或目录运行 Dlint 规则
python -m flake8 --select=DUO /path/to/code
使用前须知
- Dlint 以 flake8 插件的形式运行,因此需要先安装 flake8 和 Python。
收录于专题
标签
常见问题
- dlint 是什么?
- 基于 flake8 的 Python 插件,用于检测不安全和不良的编码写法。 Dlint 是一款面向 Python 的代码检查工具,用于发现容易引发安全问题或 bug 的不安全写法和不良编码习惯。它以 flake8 插件的形式运行,沿用 flake8 的命令行参数和配置方式。每条规则都有以 DUO 开头的编号,报告中会给出文件、行号和简短说明,例如标记 exec 的使用。
- dlint 可以免费使用吗?用的什么许可证?
- dlint 以 BSD-3-Clause 许可证开源。用于商业产品前,请先确认许可证条款。
- dlint 还在维护吗?
- 活跃维护中。dlint 最近一次提交是在 2026年10月20日。
- dlint 适合用来做什么?
- 在 Python 项目的 CI 流水线中加入安全相关的代码检查。 审查遗留 Python 代码中 exec 等有风险的写法。 通过自定义插件落实团队自有的安全编码规范。
- dlint 怎么安装和运行?
- 从 PyPI 安装 Dlint: python -m pip install dlint 通过 flake8 对文件或目录运行 Dlint 规则: python -m flake8 --select=DUO /path/to/code
- 在哪里获取 dlint?
- 源代码和安装说明在 GitHub 上:https://github.com/dlint-py/dlint
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
3833364PythonOther更新于 3天前
一款严格且观点鲜明的 flake8 插件,用于统一 Python 代码风格并标记复杂写法。
2944+3 本周439PythonMIT维护活跃更新于 昨天
Flake8 插件,用于发现 pyflakes 和 pycodestyle 不检查的潜在错误与设计问题。
1124+1 本周134PythonMIT维护活跃更新于 18小时前
一个计算 Python 函数 McCabe 圈复杂度的工具,可作为 flake8 插件使用,用于发现过于复杂的代码。
68470PythonOther更新于 26天前
基于 Rust 的多语言代码质量命令行工具,用一个工具统一运行 lint、格式化、安全扫描和可维护性检查。
3217+8 本周276COther维护活跃更新于 18小时前
一个 flake8 插件,用于检查列表、集合、字典推导式及内置函数调用中的多余或低效写法。
46625PythonMIT更新于 3天前