代码质量检查

1、简介

flake8可以检查代码是否符合PEP 8规范,包括变量命名、代码缩进、代码注释等方面。官方文档
单独使用命令如下:

python -m flake8

Black 不妥协的 Python 代码格式化工具,black可以自动对Python代码进行格式化,使得代码风格统一,易于阅读。官方文档

python -m black .

isort工具可以自动对Python的import语句进行排序和分段,可将大量的import结构格式化成非常适合阅读的排版。

python -m isort .

2、配置

在项目根目录下创建以下文件:
.flake8:flake8配置文件
pyproject.toml:black和isort配置文件

2.1 .flake8文件

除了通过命令行使用flake8之外,也可以通过flake8的配置文件控制flake8,配置文件通常命名为setup.cfg或者tox.ini或者.flake,不过flake8官方推荐配置文件使用ini格式,配置文件的选项详见flake8选项完整列表 ,下面是简单的配置文件的格式:

# -*- coding: utf-8 -*-
[flake8]
format = %(path)s: %(row)d,%(col)d: %(code)s: %(text)s
ignore = E225,E226,E231,W391,E722
max-complexity = 10
# 不检查的文件或者目录
exclude = .git,__pycache__,README.md,LICENSE,build,venv, dist, *.pyc
2.2 pyproject.toml

在 pyproject.toml 添加 [tool.pdm.scripts] 可以设置快捷命令别名,若项目的执行有非常多的参数,这种设定别名的方法将很有用。
pdm的使用见。。。。

# -*- coding: utf-8 -*-
[tool.black]
exclude = '''
/(
      .eggs         # exclude a few common directories in the
    | .git          # root of the project
    | .hg
    | .mypy_cache
    | .tox
    | venv
    | _build
    | buck-out
    | build
    | dist
  )/
'''


[tool.isort]
profile = "black"
multi_line_output = 3
skip = ["venv"]

#设置快捷命令别名
[tool.pdm.scripts]
check = { cmd = [
    # `isort  .`:使用isort  工具格式化import语句。
    # "isort .",
    #`black  .`:使用black工具格式化代码。
    # "black .",
    #`flake8  .`:使用flake8工具检查代码风格和规范性。
    # "flake8 .",
	
	"python3 -m isort .",
    "python3 -m black .",
    "python3 -m flake8 .",
] }

test = "pytest"

其中[tool.pdm.scripts] 有两种形式:

# 第一种
[tool.pdm.scripts]
start = "python main.py"

# 第二种
[tool.pdm.scripts]
start = {cmd = "python main.py"}

3、运行检查(因环境不成功)

执行如下命令:

python3  -m  pdm check 

# 正常执行下面指令就行,本人因zsh环境需使用上面命令
pdm check

4、自动化检查

可以使用pre-commit工具来自动化代码检查,每次提交代码时自动运行以上三个命令进行检查和格式化,避免不规范的代码进入代码仓库,提高代码质量。需要在项目根目录下创建.git/hooks/pre-commit的文件,内容如下:

#!/bin/sh
echo "----------------------"
echo "--- Pre-Commit Hook --"
echo "----------------------"
echo "📋 Flake8 📋"
python3 -m flake8 && echo "No Errors"
echo ""

echo "🖊️  Black 🖊️"
python3 -m black .
echo ""

echo "🗂️  isort 🗂️"
python3 -m isort . && echo "Imports Sorted"
echo ""
echo "----------------------"

执行:chmod 777 .git/hooks/pre-commit
后面再执行commit
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值