vs code、pycharm配置ruff,ruff详解

一、Vs Code配置ruff

1.插件搜索ruff安装即可
在这里插入图片描述
2.根目录下新建.ruff.toml
在这里插入图片描述
3.打开settings.json增加如下配置

 "[python]": {
    "editor.defaultFormatter": "charliermarsh.ruff", // 默认使用 Ruff 格式化
    "editor.codeActionsOnSave": {
      "source.fixAll.ruff": "explicit", // 保存时自动修复可修复的 lint 错误
      "source.organizeImports.ruff": "explicit" // 保存时自动排序 import 语句
    }
  },
  "notebook.formatOnSave.enabled": true,
  "notebook.codeActionsOnSave": {
    "notebook.source.fixAll.ruff": "explicit"
  },
  "ruff.configuration": "ruff.toml",

4.终端运行ruff config命令(需要安装ruff包),可查看ruff配置项,详细配置可参考:https://docs.astral.sh/ruff/settings/
在这里插入图片描述

cache-dir: 指定缓存目录的路径。
extend: 扩展配置文件,继承其他配置文件的设置。
output-format: 指定输出格式(如 text, json, github 等)。
fix: 自动修复可修复的问题。
unsafe-fixes: 启用不安全的修复(可能引入新的问题)。
fix-only: 仅修复问题,不进行其他检查。
show-fixes: 显示可修复的问题列表。
required-version: 指定 ruff 的最低版本要求。
preview: 启用预览功能(实验性功能)。
exclude: 排除指定的文件或目录。
extend-exclude: 扩展排除规则,继承其他配置文件的排除设置。
extend-include: 扩展包含规则,继承其他配置文件的包含设置。
force-exclude: 强制排除指定的文件或目录,忽略其他规则。
include: 包含指定的文件或目录。
respect-gitignore: 尊重 .gitignore 文件中的排除规则。
builtins: 指定内置的 Python 模块或函数。
namespace-packages: 启用对命名空间包的支持。
target-version: 指定目标 Python 版本(如 py310, py39 等)。
per-file-target-version: 为每个文件单独指定目标 Python 版本。
src: 指定源代码目录。
line-length: 设置每行的最大字符长度。
indent-width: 设置缩进的宽度(空格数)。
lint: 启用或禁用 lint 检查。
format: 启用或禁用代码格式化。
analyze: 启用或禁用代码分析功能。

二、pycharm配置ruff

1.安装ruff插件
在这里插入图片描述
2.运行pip install ruff,安装ruff包
在这里插入图片描述
3.项目根目录新建.ruff.toml

# 排除各种常见的忽略目录。
exclude = [
    ".bzr",
    ".direnv",
    ".eggs",
    ".git",
    ".git-rewrite",
    ".hg",
    ".ipynb_checkpoints",
    ".mypy_cache",
    ".nox",
    ".pants.d",
    ".pyenv",
    ".pytest_cache",
    ".pytype",
    ".ruff_cache",
    ".svn",
    ".tox",
    ".venv",
    ".vscode",
    "__pypackages__",
    "_build",
    "buck-out",
    "build",
    "dist",
    "node_modules",
    "site-packages",
    "venv",
]
target-version = "py312" #指定python版本
indent-width = 4 #tab每次缩进所用的空格数
line-length = 120 #每行最大字符数

[format]
indent-style = "space" #是否使用空格或制表符进行缩进,制表符-tab、空格space
docstring-code-format = true #是否在注释中格式化代码片段
skip-magic-trailing-comma = true #使用现有的尾随逗号作为短行应保持独立的指示
line-ending = "auto" #行尾使用的字符
quote-style = "single" #字符使用单引号

[lint]
fixable = ["ALL"] # 可修复的规则·
select = ["F","E","W","UP","I"] # 选择的规则
ignore = ["E501", "UP031"]  # 忽略的规则

[lint.isort]
lines-after-imports = 1 #在导入后插入的空行数
no-sections = true #用于控制导入语句的分组方式,true导入遇见不分组

4.pycharm设置ruff,settings>tools>ruff
在这里插入图片描述
5.禁用pycharm默认的格式话规则PEP8,settings>editor >inspections,搜索PEP,取消勾选
在这里插入图片描述

三、ruff常用命令

1.ruff check:检查代码语法和 lint 问题。

ruff check .:检查当前目录下的代码。
ruff check --fix:检查并自动修复可修复的 lint 问题。
ruff check --watch:监视文件变化并实时检查。
ruff check --select E:仅检查特定规则(如 E 开头的规则)。
ruff check --ignore F401:忽略特定规则(如 F401)。
ruff check --config ruff.toml:使用指定配置文件进行检查。

2.ruff format:格式化代码。

ruff format .:格式化当前目录下的代码。
ruff format --check:检查代码是否符合格式化规则,但不修改文件。
ruff format --diff:显示格式化前后的差异。

3.ruff fix:自动修复可修复的 lint 问题。

ruff fix .:修复当前目录下的代码问题。
ruff fix --unsafe:修复包括不安全修复的问题。

4.ruff rule:查看特定规则的详细信息。

ruff rule E501:查看规则 E501 的详细说明。

5.ruff list:列出所有可用的 lint 规则。

ruff list --format json:以 JSON 格式列出规则。
ruff list --categories:按类别列出规则

6.ruff clean:清理 Ruff 缓存文件。
7.ruff version:查看 Ruff 的版本信息。
8.ruff help:显示 Ruff 的帮助信息。

ruff help:查看所有命令的帮助信息。
ruff help check:查看 check 命令的详细用法。

四、基本配置

1.cache-dir = “~/.cache/ruff”:缓存目录
2.exclude = []:排除格式化和代码检查的文件模式列表
3.extend = “…/pyproject.toml”:本地pyproject.toml路径
4.extend-exclude = [“tests”, “src/bad.py”]:文件格式化和代码风格检查中要排除的文件模式列表
5.extend-include = [“.pyw"]:代码检查时包含的文件模式列表,除由 include 指定的之外
6.fix = true:启用运行ruff 时的默认修复行为
7.fix-only = true:类似于 fix ,但禁用对剩余违规行为的报告
8.force-exclude = true:是否强制执行 exclude 和 extend-exclude 模式
9.include = ["
.py”]:代码检查时包含的文件模式列表
10.indent-width = 2:tab每次缩进所用的空格数
11.line-length = 120:行长度
12.namespace-packages = [“airflow/providers”]:将指定的目录标记为命名空间包。为了模块解析,Ruff 将将这些目录及其所有子目录视为包含一个 init.py 文件
13.builtins = [“_”]:内置函数列表
14.output-format = “grouped”:违规消息的格式化样式
full:默认样式(显示源代码)
concise:简洁样式
grouped:按文件分组显示消息
json:机器可读的 JSON 格式
junit:机器可读的 XML 格式
github:GitHub Actions 注解
gitlab:GitLab CI 代码质量报告
pylint:Pylint 文本格式
azure:Azure Pipeline 日志命令
15.preview = true:是否启用预览模式
16.required-version = “>=0.0.193”:强制对 Ruff 的版本进行要求,以在运行时强制执行。如果 Ruff 的版本不符合要求,Ruff 将错误退出
17.respect-gitignore = false:是否自动排除由 .ignore 、 .gitignore 、 .git/info/exclude 和全局 gitignore 文件忽略的文件
18.show-fixes = true:是否显示所有固定 lint 违规的枚举
19.src = [“src”, “test”]:解决首方与第三方导入时需要考虑的目录
20.target-version = “py37”:目标 Python 版本的最小值
21.unsafe-fixes = true:启用不安全修复的应用
22.per-file-target-version:文件模式到要检查的相应文件时使用的 Python 版本的映射列表

[per-file-target-version]
"scripts/**.py" = "py312"

五、analy配置

1.配置示例

[analyze]
preview = true

2.detect-string-imports = true:是否检测来自字符串字面量的导入
3.direction = “dependencies”:否从文件生成依赖文件或依赖它的文件的映射图。
4.exclude = [“generated”]:文件模式列表,用于排除从全局排除的文件之外进行格式化的文件
5.preview = true:是否启用预览模式
6.analyze.include-dependencies:文件路径到应被视为该文件依赖项的 Python 或非 Python 文件路径或通配符列表的映射,无论是否检测到相关导入

[per-file-target-version]
"scripts/**.py" = "py312"

六、format配置

1.配置示例

[format]
docstring-code-format = true

2.indent-style = “tab”:是否使用空格或制表符进行缩进,制表符-tab、空格space
3.quote-style = “single”:字符串行为,双引号-double、单引号-single
4.line-ending = “lf”:行尾使用的字符
auto:换行样式会根据每个文件自动检测。对于包含混合换行符的文件,将转换为首次检测到的换行符。对于不包含任何换行符的文件,默认使用 \n。
lf:换行符将转换为 \n。这是 Unix 系统上的默认换行符。
cr-lf:换行符将转换为 \r\n。这是 Windows 系统上的默认换行符。
native:换行符将根据操作系统自动转换,在 Unix 上为 \n,在 Windows 上为 \r\n。
5.skip-magic-trailing-comma = true:使用现有的尾随逗号作为短行应保持独立的指示
6.docstring-code-format = true:是否在注释中格式化代码片段
7.docstring-code-line-length = 60:设置在注释中格式化代码片段时使用的行长度
8.exclude = [“generated”]:文件模式列表,用于排除从全局排除的文件之外进行格式化的文件
9.preview = true:是否启用预览模式

七、lint配置

1.配置示例,规则查询可参考:https://docs.astral.sh/ruff/rules/

[lint]
select = ["F","E","W","UP","I"] # 选择的规则
ignore = ["F401"]  # 忽略的规则

2.select = [“F”,“E”,“W”,“UP”,“I”]:选择规则,常见的规则如下

F:pyflakes,提供了一些比较基础的问题检查。
E, W:pycodestyle 的 errors 和 warnings,用于检查代码是否符合 PEP 8 规范。
I:isort,用于对 import 语句进行排序和格式化。
UP:pyupgrade,提示新版本的 Python 语法,帮助代码升级到最新版本。
N:pep8-naming,用于检查代码是否符合 PEP 8 命名规范。
PL:Pylint,知名的静态代码检查工具,提供全面的代码质量检查。
PERF:pyperf,用于检测代码中的性能问题。
RUF:Ruff,Ruff 社区自己实现的一些规则,用于增强代码质量和风格检查。

3.ignore:定义要忽略的规则列表。
4.fixable:定义可自动修复的规则列表。
5.unfixable:定义不可自动修复的规则列表。
6.allowed-confusables:允许使用某些容易混淆的字符(如 Unicode 相似字符)。
7.dummy-variable-rgx:定义匹配虚拟变量(如 _ 或 unused)的正则表达式。
8.exclude:指定要排除的文件或目录,不进行 lint 检查。
9.explicit-preview-rules:显式启用预览规则(实验性规则)。
10.extend-fixable:扩展可自动修复的规则列表。
11.extend-ignore:扩展要忽略的规则列表。
12.extend-per-file-ignores:扩展针对特定文件的忽略规则。
13.extend-safe-fixes:扩展安全修复的规则列表。
14.extend-select:扩展要启用的规则列表。
15.extend-unsafe-fixes:扩展不安全修复的规则列表。
16.external:指定外部依赖或工具的配置。
17.ignore-init-module-imports:忽略 init.py 中的模块导入问题。
18.logger-objects:定义日志记录器对象的名称。
19.per-file-ignores:针对特定文件定义忽略规则。
20.preview:启用预览功能(实验性规则或功能)。
21.task-tags:定义任务标签(如 TODO、FIXME)。
22.typing-modules:定义类型注解相关的模块。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

局外人LZ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值