[ PROMPT_NODE_27664 ]
security-ownership-map
[ SKILL_DOCUMENTATION ]
# 安全所有权映射
## 概述
从 git 历史记录中构建人员与文件的二分图,计算所有权风险,并导出用于 Neo4j/Gephi 的图数据制品。同时构建文件共同变更图(基于共享提交的 Jaccard 相似度),以便根据文件的协同变动情况对文件进行聚类,同时忽略大型、嘈杂的提交。
## 要求
- Python 3
- `networkx`(必需;默认启用社区检测)
安装命令:
bash
pip install networkx
## 工作流
1. 确定仓库范围和时间窗口(可选 `--since/--until`)。
2. 确定敏感度规则(使用默认值或提供 CSV 配置)。
3. 使用 `scripts/run_ownership_map.py` 构建所有权映射(默认开启共同变更图;使用 `--cochange-max-files` 忽略超级节点提交)。
4. 默认计算社区;graphml 输出可选(`--graphml`)。
5. 使用 `scripts/query_ownership.py` 查询输出以获取有界的 JSON 切片。
6. 持久化并可视化(参见 `references/neo4j-import.md`)。
默认情况下,共同变更图会忽略常见的“胶水”文件(锁文件、`.github/*`、编辑器配置),因此集群反映的是实际的代码变动,而不是共享的基础设施编辑。可通过 `--cochange-exclude` 或 `--no-default-cochange-excludes` 进行覆盖。Dependabot 提交默认被排除;可通过 `--no-default-author-excludes` 覆盖,或通过 `--author-exclude-regex` 添加模式。
如果你想从共同变更聚类中排除像 `Kbuild` 这样的 Linux 构建胶水文件,请执行:
bash
python skills/skills/security-ownership-map/scripts/run_ownership_map.py
--repo /path/to/linux
--out ownership-map-out
--cochange-exclude "**/Kbuild"
## 快速开始
从仓库根目录运行:
bash
python skills/skills/security-ownership-map/scripts/run_ownership_map.py
--repo .
--out ownership-map-out
--since "12 months ago"
--emit-commits
默认值:排除作者身份、作者日期和合并提交。如果需要,请使用 `--identity committer`、`--date-field committer` 或 `--include-merges`。
示例(覆盖共同变更排除项):
bash
python skills/skills/security-ownership-map/scripts/run_ownership_map.py
--repo .
--out ownership-map-out
--cochange-exclude "**/Cargo.lock"
--cochange-exclude "**/.github/**"
--no-default-cochange-excludes
默认计算社区。如需禁用:
bash
python skills/skills/security-ownership-map/scripts/run_ownership_map.py
--repo .
--out ownership-map-out
--no-communities
## 敏感度