# -*- coding: utf-8 -*- """两件事: 1. 修 netcheck.py 结尾的坏代码 文件末尾是 `if __name__ == "__main__": sys.exit(main())`, 但这个文件里根本没有 main() —— 它的入口是 run_check()。 通过 ykxmz.exe --netcheck 走不到这段(那走的是 run_check), 但直接 `python netcheck.py` 就会 NameError 崩掉。 2. 把 pyflakes 静态检查加进 verify_all 这次的 DEFAULT_RELAY_URL 崩溃,自带的回归全绿、编码审计也过, 因为它是"运行到那行才炸"。pyflakes 静态扫一遍就能发现。 """ from __future__ import annotations import sys from pathlib import Path ROOT = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote") NETCHECK = ROOT / "windows" / "lanremote" / "netcheck.py" VERIFY = ROOT / "_tests" / "verify_all.ps1" NET_OLD = '''if __name__ == "__main__": sys.exit(main())''' NET_NEW = '''if __name__ == "__main__": # 直接 `python netcheck.py [秒数]` 也能用。 # 原来这里写的是 main(),但本文件没有 main() —— # 入口是 run_check(),直接跑会 NameError。 sys.exit(run_check(int(sys.argv[1]) if len(sys.argv) > 1 else 90))''' STAGE_ANCHOR = "# ---------------------------------------------------------------- 4b" STAGE_NEW = """# ---------------------------------------------------------------- 3b Banner "3b/7 Python 静态检查(pyflakes)" # 这一层能抓到"运行到某行才炸"的问题。 # 踩过的坑:check_code_available() 用了没导入的 DEFAULT_RELAY_URL, # 结果装到最后一步弹 NameError —— 而回归全绿、编码审计也过。 & python (Join-Path $root "_tests\\audit_python_names.py") 2>&1 | Select-Object -Last 4 Record "Python 静态检查" ($LASTEXITCODE -eq 0) """ + STAGE_ANCHOR def main() -> int: ok = True # ---- 1. netcheck ---- text = NETCHECK.read_text(encoding="utf-8") if "sys.exit(run_check(" in text: print(" netcheck.py 已经修过") elif NET_OLD in text: text = text.replace(NET_OLD, NET_NEW, 1) NETCHECK.write_text(text, encoding="utf-8", newline="\n") print(" netcheck.py:结尾改成调 run_check()") else: print(" [失败] netcheck.py 锚点没找到") ok = False # ---- 2. verify_all 加阶段 ---- raw = VERIFY.read_bytes() had_bom = raw.startswith(b"\xef\xbb\xbf") text = raw.decode("utf-8-sig") if "audit_python_names" in text: print(" verify_all:已经加过静态检查阶段") elif STAGE_ANCHOR in text: text = text.replace(STAGE_ANCHOR, STAGE_NEW, 1) VERIFY.write_bytes((b"\xef\xbb\xbf" if had_bom else b"") + text.replace("\r\n", "\n").encode("utf-8")) print(f" verify_all:加了阶段 3b(BOM {'保留' if had_bom else '无'})") else: print(" [失败] verify_all 锚点没找到") ok = False import ast try: ast.parse(NETCHECK.read_text(encoding="utf-8")) print(" netcheck.py 语法 OK") except SyntaxError as exc: print(f" netcheck.py 语法错误: {exc}") ok = False return 0 if ok else 1 if __name__ == "__main__": sys.exit(main())