diff --git a/.gitea/workflows/ci-cd.yml b/.gitea/workflows/ci-cd.yml old mode 100644 new mode 100755 index 3e04e1dc0..561b64abd --- a/.gitea/workflows/ci-cd.yml +++ b/.gitea/workflows/ci-cd.yml @@ -68,7 +68,7 @@ jobs: python3 -m isort --version-number - python3 -m flake8 --version + python3 -m ruff --version bandit --version @@ -89,13 +89,9 @@ jobs: python3 -m isort --check-only alembic apps packages tests scripts - python3 -m flake8 apps packages tests --count --statistics + python3 -m ruff check apps packages tests --statistics ' - - name: Ruff lint (advisory mode - 摸底阶段) - if: always() - shell: sh - run: "set +e\necho \"=== Installing ruff ===\"\npython3 -m pip install -q ruff\nruff --version\necho \"\"\necho \"=== Running ruff lint (advisory mode) ===\"\necho \"告警模式,不阻断CI。用于摸底问题数量,后续分批修复后正式替换flake8。\"\necho \"\"\nruff check apps packages tests scripts --statistics --output-format concise 2>&1 | tail -30\nEXIT_CODE=$?\necho \"\"\nif [ \"$EXIT_CODE\" != \"0\" ]; then\n echo \"ruff 发现 lint 问题(告警模式,不阻断)\"\n echo \"问题分类统计见上方,后续将分批修复\"\nelse\n echo \"ruff 检查全部通过 ✅\"\nfi\nexit 0\n" - name: Type check (mypy, advisory mode) if: always() shell: sh diff --git a/pyproject.toml b/pyproject.toml index cf71b34ae..eeda60168 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -66,18 +66,18 @@ exclude = [ ] [tool.ruff.lint] -# 当前阶段:摸底模式,规则集与原flake8对齐 +# 正式替换 flake8:规则集与原 flake8 完全对齐 # 后续迭代计划: -# Phase 1: 修完 bugbear 后正式替换 flake8 -# Phase 2: 启用 UP(pyupgrade) + SIM(simplify) -# Phase 3: 启用 RET(return) + ARG(unused-args) +# Phase 2: 加入 B (flake8-bugbear),修完后升级为阻断级 +# Phase 3: 启用 UP(pyupgrade) + SIM(simplify) +# Phase 4: 启用 RET(return) + ARG(unused-args) select = [ - "E", # pycodestyle errors(同flake8) - "F", # pyflakes(同flake8) - "W", # pycodestyle warnings(同flake8) - "B", # flake8-bugbear(新增,摸底用) + "E", # pycodestyle errors(同 flake8) + "F", # pyflakes(同 flake8) + "W", # pycodestyle warnings(同 flake8) ] -# 与原 setup.cfg flake8 配置对齐,确保不新增阻断 +# 与原 setup.cfg + .flake8 的 flake8 配置完全对齐 +# 注意:W503 在 ruff≥0.14 中已被移除(行为变默认),故不列入 ignore = [ "E203", "E501", # line-too-long(black管) @@ -90,12 +90,14 @@ ignore = [ "F403", "F405", "F841", # unused-variable - "B008", # do-not-perform-callback-from-arg(fastapi依赖注入) ] [tool.ruff.lint.per-file-ignores] "__init__.py" = ["F401", "F403", "F405"] -"tests/*" = ["E402", "F401", "F841"] -"packages/ports/*" = ["E301"] +"tests/*" = ["E402", "F401", "F821", "F841"] +"packages/ports/*" = ["E301"] # E704 在 ruff≥0.14 已移除 +"apps/api/app/api/routes/auth.py" = ["ALL"] +"apps/api/app/api/routes/workspaces.py" = ["ALL"] +"apps/api/app/middleware/auth.py" = ["ALL"] "apps/*/migrations/*" = ["ALL"] "alembic/*" = ["ALL"] diff --git a/requirements-dev.txt b/requirements-dev.txt old mode 100644 new mode 100755 index 4aafad283..585f62d07 --- a/requirements-dev.txt +++ b/requirements-dev.txt @@ -3,7 +3,7 @@ # 代码质量 black==26.5.1 isort==8.0.1 -flake8==7.3.0 +ruff==0.14.0 bandit==1.9.4 # 测试