用途:在推送前对改动过的 C# 代码做静态预检,按 github-code-quality[bot] 在 PR 上运行的确定性 CodeQL csharp-code-quality 规则集逐行比对,标出可能触发机器人行内评论的代码,便于提前修正。只覆盖该仓库中被机器人检查的 C#,不涉及 C/C++,也不覆盖机器人的独立 AI 检查通道。
主要能力与用法:先用 git merge-base origin/main HEAD 找出合并基,跟踪改动用 git --no-pager diff --name-only <base>,未跟踪新文件用 git ls-files --others --exclude-standard -- "src/*.cs" 后直接查看。只保留 src 下的 *.cs,排除匹配 **/Tests/.cs 的文件;然后读取变更行(跟踪文件用 git --no-pager diff --unified=0 <base> -- <file>),仅在变更 hunk 内按规则表逐行判断,记录规则 id、file:line、代码片段与最小修复,输出到 stdout,不写文件、不改代码。
规则范围:涵盖异常处理(如 cs/catch-of-all-exceptions、cs/empty-catch-block、cs/rethrown-exception-variable)、空值与解引用、资源释放、相等性与哈希、死代码与无用代码、LINQ 机会、集合与索引、并发与锁、this/强制转换/继承、API 与设计异味(如 cs/path-combine、cs/call-to-gc、cs/loss-of-precision、cs/stringbuilder-creation-in-loop)等。带 † 的规则属于分析密集型(空值流、释放逃逸、值未使用、LINQ 形态),置信度较低。
限制:这是对 diff 的模式匹配,不是确定性数据流/类型引擎,可能漏报或误报 † 规则;干净结果仅表示没有明显问题,不保证机器人零评论。也不适用于单行“这行是否 OK”的提问,以及 ASP 相关规则(除非出现 ASP 代码)。规则表为 69 条规则的时点快照,CodeQL 版本变化后需重新生成,而非手工编辑。