Dlint是一个鼓励最佳编码实践并帮助确保Python代码安全性的工具。
项目描述
Dlint
Dlint是一个鼓励最佳编码实践并帮助确保Python代码安全性的工具。
近年来,作为程序员,我最重要的事情是积极追求静态代码分析。通过它预防的数百个严重错误,甚至比这更有价值的是,我对软件可靠性和代码质量的看法发生了变化。
为了使静态分析项目成功,开发者必须感到他们从中受益并享受使用它。
有关文档和规则列表,请参阅文档。
安装
$ python -m pip install dlint
并确保它已正确安装
$ python -m flake8 -h
Usage: flake8 [options] file file ...
...
Installed plugins: dlint: 0.15.0, mccabe: 0.5.3, pycodestyle: 2.2.0, pyflakes: 1.3.0
注意dlint: 0.15.0
。
使用
Dlint基于flake8
执行其代码检查。这提供了许多有用的功能,而不必重新发明轮子。
命令行界面
让我们运行一个简单的检查
$ cat << EOF > test.py
print("TEST1")
exec('print("TEST2")')
EOF
$ python test.py
TEST1
TEST2
$ python -m flake8 --select=DUO test.py
test.py:2:1: DUO105 use of "exec" is insecure
- 为什么这是不安全的?了解更多信息,请访问
/docs/linters/DUO105.md
。 - 为什么是
DUO
?Dlint最初是由Duo Labs团队开发的。
--select=DUO
标志告诉 flake8
只运行 Dlint 检查规则。
从这里,我们可以轻松地对Python代码目录运行Dlint。
$ python -m flake8 --select=DUO /path/to/code
要微调您的代码检查,请查看 flake8
帮助信息。
$ python -m flake8 --help
内联编辑器
Dlint的结果也可以直接包含在您的编辑器中,以便快速反馈。这通常需要一个编辑器插件或扩展。以下是常见编辑器的起始点:
- Vim: https://github.com/vim-syntastic/syntastic
- Emacs: https://github.com/flycheck/flycheck
- Sublime: https://github.com/SublimeLinter/SublimeLinter-flake8
- PyCharm: https://foxmask.net/post/2016/02/17/pycharm-running-flake8/
- Atom: https://atom.io/packages/linter-flake8
- Visual Studio Code: https://vscode.js.cn/docs/python/linting#_flake8
集成
Dlint可以轻松集成到CI管道或其他任何地方。
有关更多信息示例,请参阅 '如何将Dlint集成到XYZ?'。
自定义插件
Dlint的自定义插件基于一个简单的命名约定,并依赖于Python模块。要创建Dlint自定义插件,请遵循以下约定:
- Python模块名 必须 以
dlint_plugin_
开头。 - 检查器类名 必须 以
Dlint
开头。 - 检查器类 应该 继承自
dlint.linters.base.BaseLinter
。- 如果出于某种原因您想避免继承,则 必须 正确实现
get_results
函数并从ast.NodeVisitor
继承。
- 如果出于某种原因您想避免继承,则 必须 正确实现
请参阅示例插件以获取更多信息。
开发
首先,安装开发包
$ python -m pip install -r requirements.txt
$ python -m pip install -r requirements-dev.txt
$ python -m pip install -e .
测试
$ pytest
代码检查
$ flake8
覆盖率
$ pytest --cov
基准测试
$ pytest -k test_benchmark_run --benchmark-py-file /path/to/file.py tests/test_benchmark/
或为单个检查器获取基准测试结果
$ pytest -k test_benchmark_individual --benchmark-py-file /path/to/file.py tests/test_benchmark/
或针对单个检查器运行
$ pytest -k test_benchmark_individual[DUO138-BadReCatastrophicUseLinter] --benchmark-py-file /path/to/file.py tests/test_benchmark/
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分布
此版本没有可用的源分布文件。请参阅生成分布存档的教程。
构建分布
dlint-0.15.0-py3-none-any.whl (44.8 kB 查看哈希值)
关闭
dlint-0.15.0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cc5bfa5a887427d808a3f188e5e2934ffb5bb43336f18710215b19d719d31ea7 |
|
MD5 | 1e5a4553fdf68c8fe8697825fe9d1c59 |
|
BLAKE2b-256 | 449214a106e769145a654cfd7f5e0796186da2a4105638f367704f8752483a9b |