docs: 记录规则生效的探针反证过程

复核 ruff/pyright 规则是否真的被加载:排除所有可能覆盖 pyproject 的配置文件,并用故意违规的探针文件确认精确命中。

新知识:X | None 的规则码在新版 ruff 是 UP045 而非 UP007;SIM105 对 try 体含 return 的情况有意不报,所以'没报出来'不等于'规则没启用'。
This commit is contained in:
snowy-yang committed 2026-09-18 21:32:46 +08:00
1 parent 52004571c8
commit 47dd818360
1 file changed
+17
+17
View File
@@ -103,3 +103,20 @@ TUI 只在用户玩时作为客户端、用户也能用 HTTP 调用、支持多
- 端到端复验:`uv run main.py serve --daemon --port 8796` 起服 → - 端到端复验:`uv run main.py serve --daemon --port 8796` 起服 →
status / actions / do(plant, buy_animal, feed) / farms / stop 全通,优雅停机并落盘。 status / actions / do(plant, buy_animal, feed) / farms / stop 全通,优雅停机并落盘。
- 行尾复核:全部 `.py` 与 `README.md` 均 0 个 CRLF,blob 与工作区逐字节相同。 - 行尾复核:全部 `.py` 与 `README.md` 均 0 个 CRLF,blob 与工作区逐字节相同。
## 复核:ruff / pyright 规则是否真的生效(用探针反证)
用户追问"规则你加了吗",做了**正向反证**而不是只回答"写了":
- 先排除覆盖源:不存在 `ruff.toml` / `.ruff.toml` / `pyrightconfig.json` / `setup.cfg` /
`tox.ini` / `.flake8` / `mypy.ini` —— **唯一配置来源就是 pyproject.toml**。
- 写故意违规的探针文件 `tools/_rule_probe.py`(用完即删),实测命中:
ruff → F401 / RUF012 / UP045 / E741 / UP031 / E501(145>100) / SIM105 / SIM102 / B018;
pyright → reportUnusedImport / reportReturnType ×2 / reportArgumentType。
说明 `select`、`line-length=100`、`reportUnusedImport=true` 等**全部真在生效**。
- `ruff check --show-settings` 复核:`linter.line_length = 100`、
`pycodestyle.max_line_length = 100`、`formatter.line_ending = auto`、
`analyze.target_version = 3.10`;启用规则 **263 条**,前缀
[B,C,E,F,I,PERF,RET,RUF,SIM,UP,W] 与 select 的 11 项一一对应。
- 新知识:`X | None` 的规则码在新版 ruff 里是 **UP045**(不是 UP007);
**SIM105 对 try 体里含 `return` 的情况有意不报**(换个朴素用例才命中),
所以"某条规则没报出来"≠"规则没启用",别急着改配置。
- 该手法已补进技能 `python-uv-ruff-pyright-hardening` 的「反证:确认配置真的被加载了」一节。