如何让 AI 代码评审尊重 .gitignore:open-code-review 评审过滤逻辑完整指南

发布时间:2026/8/31 9:21:27
如何让 AI 代码评审尊重 .gitignore:open-code-review 评审过滤逻辑完整指南 如何让 AI 代码评审尊重 .gitignoreopen-code-review 评审过滤逻辑完整指南【免费下载链接】open-code-reviewFast, efficient, battle-tested at Alibabas scale. Hybrid architecture code review tool: deterministic pipelines LLM Agent, precise line-level comments, built-in multi-language ruleset (NPE, thread-safety, XSS, SQL injection), OpenAI Anthropic compatible.项目地址: https://gitcode.com/GitHub_Trending/op/open-code-reviewopen-code-review是一个混合架构的 AI 代码评审工具确定性流水线 LLM Agent输出精确的行级评论内置多语言规则集NPE、线程安全、XSS、SQL 注入。它的一个容易被忽略的优点是——评审前会严格尊重你仓库的.gitignore生成代码、依赖目录、日志文件不会浪费 Token 也不会产生噪音评论。本文带你快速看懂它的 gitignore 过滤逻辑是如何实现的。三层过滤评审前的 gitignore 处理流程open-code-review 在拿到 git diff 后会先用filterDiffs过滤掉所有命中排除规则的文件再交给 LLM 评审。过滤逻辑位于 internal/diff/git.go共三层第一层内置目录黑名单不可豁免无论你的.gitignore怎么写以下目录前缀永远跳过定义在 internal/diff/git.go.git/、.idea/、.vscode/、.svn/node_modules/、vendor/、target/、pkgs/即使你在.gitignore里写!node_modules/也无法把它们重新拉回评审范围——这是无条件黑名单。对外复用的入口是 ExcludedDirs()。第二层加载 .gitignore 规则loadGitignorePatterns() 只读取仓库根目录的.gitignore逐行解析并跳过空行和#注释。文件不存在时返回 nil评审照常进行仅依赖内置黑名单。第三层git 语义的模式匹配核心函数 isPathExcluded() 完整模拟了 git 的解析规则而不是简单命中即排除写法行为*.log无斜杠 → 匹配任意深度的文件名/docs/api.md前导/→ 仅锚定仓库根目录build*/尾随/→ 只匹配目录不匹配文件**/generated/globstar → 跨任意层级匹配目录!important.go前导!→ 否定重新纳入评审关键设计最后一条匹配规则生效Last Match Wins这是最容易被自研工具做错的一点。git 的.gitignore按文件从上到下顺序解析最后命中的规则决定结果。open-code-review 严格遵循这一语义internal/diff/git.go 注释有详细说明。为什么重要GitHub 官方 github/gitignore 模板提供了大量AllowList写法先用*忽略一切再用!逐条把源码捞回来。如果把否定规则当作不可匹配直接丢弃这类仓库会静默地评审不到任何文件。open-code-review 专门为此写了回归测试 TestIsPathExcluded_AllowListGitignore 和 TestIsPathExcluded_LastMatchWins确保顺序语义正确。一个细节否定 尾随斜杠如!*/在 git 中用于继续遍历子目录而非重新纳入其中的文件open-code-review 对此做了特殊处理避免整个子树被误放行。删除文件的边界处理diff 中NewPath为/dev/null的文件被删除的文件会回退到OldPath参与排除判断保证删除一个.log文件同样被过滤internal/diff/git.go。这套排除列表还被 scan 全量扫描模块复用同一套黑名单保证 diff 评审和全仓扫描行为一致。补充排除--exclude 参数内置规则不够用时命令行支持逗号分隔的 gitignore 风格模式--exclude **/generated/*,*.pb.go它会与rule.json的 excludes 合并生效参数说明见 pages/src/content/docs/zh/cli-reference.md。小结三层过滤内置目录黑名单 → 根目录.gitignore→ git 语义匹配层层递进完整 git 语义最后匹配生效、否定规则、globstar、目录/文件区分与官方模板兼容不会静默漏评AllowList 仓库有专门的回归测试保障可定制--exclude追加自己的排除模式理解这套逻辑后你可以放心把生成代码、构建产物写进.gitignore——open-code-review 会与 git 一样尊重它们让 LLM 只把预算花在真正值得评审的代码上。更多细节可阅读源码internal/diff/gitignore.go对外 API 封装、internal/diff/gitignore_test.go全部匹配用例。【免费下载链接】open-code-reviewFast, efficient, battle-tested at Alibabas scale. Hybrid architecture code review tool: deterministic pipelines LLM Agent, precise line-level comments, built-in multi-language ruleset (NPE, thread-safety, XSS, SQL injection), OpenAI Anthropic compatible.项目地址: https://gitcode.com/GitHub_Trending/op/open-code-review创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考