[tool.ruff]

line-length = 120

target-version = "py310"

format.quote-style = "preserve"



[tool.ruff.lint]

# 追加 D209,不会覆盖、不会屏蔽任何现有规则

extend-select = [

  "D209",  # 规则8:多行文档字符串末尾 """ 必须单独一行

  "SIM115",    # 规则17:推荐用 with 代替 try-finally

]



# 业界标准 PYLINT 生产配置

# 只开高价值规则,关闭所有洁癖规则

# ================================

[tool.pylint]

reports = false

score = false

max-line-length = 120

max-args = 15       # 放宽,不检查

max-branches = 50   # 放宽,不检查

max-statements = 200# 放宽,不检查

max-locals = 50     # 放宽,不检查

max-positional-arguments = 20  # 放宽,不检查



# ================================

# 只开启:真正会导致程序崩溃的错误(BUG 级别)

# ================================

enable = [

  # 语法/运行时错误(必开)

  "E0100",  # 语法错误

  "E0601",  # 使用未定义变量

  "E0602",  # 变量未定义

  "E0603",  # 使用未定义属性

  "E0611",  # 导入不存在的包

  "E0632",  # 缺少返回值

  "E1101",  # 访问不存在成员

  "E1120",  # 不可调用对象被调用

  "E0632",  # 缺少返回值



  # 潜在崩溃警告(高价值)

  "W0632",  # 元组解包不匹配(会崩)

  "W1514",  # open 未指定 encoding(跨平台乱码)

]



# ================================

# 关闭所有洁癖/格式/风格/复杂度警告

# ================================

disable = [

  # 所有命名、文档、格式

  "invalid-name",

  "missing-docstring",

  "missing-module-docstring",

  "missing-function-docstring",

  "missing-class-docstring",

  "empty-docstring",

  "line-too-long",

  "trailing-whitespace",



  # 所有复杂度检查(函数太长、分支太多、参数太多等)

  "too-many-arguments",

  "too-many-positional-arguments",

  "too-many-branches",

  "too-many-statements",

  "too-many-locals",

  "too-many-return-statements",

  "too-many-instance-attributes",

  "too-few-public-methods",

  "too-many-public-methods",



  # 所有未使用变量/参数警告

  "unused-argument",

  "unused-variable",

  "unused-import",



  # 所有保护成员访问警告

  "protected-access",



  # 所有风格优化建议

  "no-else-raise",

  "no-else-return",

  "consider-using-enumerate",

  "use-dict-literal",

  "consider-using-f-string",

  "superfluous-parens",

  "unnecessary-pass",

  "len-as-condition",

  "global-statement",

  "import-outside-toplevel",

  "raise-missing-from",

  "broad-except",

  "bare-except",



  # 导入相关

  "wrong-import-order",

  "wrong-import-position",

  "import-error",

]



# ==============================================

# Bandit 安全检查 业界标准配置(企业通用)

# ==============================================

[tool.bandit]

# 检查级别:中高危都报

severity_level = "MEDIUM"

confidence_level = "MEDIUM"



# 跳过无需检查的目录

exclude_dirs = [

  "tests",

  "test",

  "venv",

  ".venv",

  "build",

  "dist",

  "migrations",

  "__pycache__",

]



# 启用所有安全检查

skips = []



# 报告格式

format = "screen"

quiet = true