
AST 없는 휴리스틱 지식 그래프 엔진으로, 심층 리포지토리 인텔리전스와 제로 트러스트 보안 스캐닝을 제공합니다. GitLab CI/CD 구성 요소로 통합되어 악성 코드를 차단하고 SARIF 텔레메트리를 GitLab Security Dashboard로 내보냅니다.
# GitGalaxy
**컴파일 없이 저장소 규모의 구조적 인텔리전스.**
[Docs](https://squid-protocol.github.io/gitgalaxy/) ·
[Visualizer](https://gitgalaxy.io/) ·
[Language Crucible](https://github.com/squid-protocol/language-crucible) ·
[Keyword Rosetta](https://github.com/squid-protocol/keyword-rosetta) ·
[Raw Output](https://github.com/squid-protocol/gitgalaxy-raw-output)
**1회 스캔 · 97개 구조적 신호 · 50개 이상 언어 · 컴파일 없음 · 17개
위험 노출 범주 · 6개 출력**
## 요약
GitGalaxy는 소스 텍스트로부터 직접 **전체 저장소의 언어 중립적 구조
그래프**를 구축합니다 — 빌드도, 언어별 툴체인도 필요하지 않습니다.
이는 다중 언어(polyglot)이거나, 부분적으로 손상되었거나, 레거시이거나,
벤더 코드가 많거나, 그 밖에 빌드 우선 워크플로로 분석하기 어려운
저장소를 위해 설계되었습니다:
``` text
Go + C++ + Python + Java + Bash + YAML
+ generated code + vendored code + legacy code
+ half-migrated modules + broken dependencies
```
언어별로 별도의 파서를 두는 대신, GitGalaxy는 **구조적 시그니처** — 함수, 클래스, 인자, 제어 흐름, 상태 변경, I/O, API, 의존성 — 라는 공통 어휘를 추출하고, 이를 하나의 결정론적 저장소 모델로 정규화하여 아키텍처 분석, 위험 노출 우선순위 지정, SBOM 생성, 리팩터링 및 소유권 분석, AI 지향 코드베이스 컨텍스트, CI/CD 게이트에 공급합니다.
> **핵심 명제:** 저장소 규모에서 매우 유용한 구조적 정보를 복원하는 데 항상 완전한 언어 파싱이 필요한 것은 아닙니다.
이 명제가 어떻게 검증되는지 — Tree-sitter 및 Ctags와의 비교, 심어 놓은 대조 코퍼스와의 비교, 그리고 다음으로 Git 이력과의 비교 — 는 아래의 [정확도, 측정됨](#accuracy-measured)에 요약되어 있으며 [검증 프로그램](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/validation.md)에 전체가 설명되어 있습니다.
------------------------------------------------------------------------
## 스캔으로 얻는 것
명령 하나:
``` bash
pip install gitgalaxy
galaxyscope path/to/repo
```
동일한 결정론적 스캔에 대한 여섯 개의 조정된 뷰:
| 출력 | 목적 |
|---|---|
| **LLM 아키텍처 브리프** | 압축된 기계/에이전트 지향 컨텍스트 (아래) |
| **SARIF** | CI/보안 대시보드 통합 |
| **CycloneDX SBOM** | 의존성 인벤토리/컴플라이언스 |
| **SQLite** | 쿼리 가능한 저장소 지식 그래프 |
| **JSON 감사 데이터** | 포렌식/자동화 워크플로 |
| **3D 시각화 데이터** | 대화형 저장소 토폴로지 |
### 아키텍처 브리프
플래그십 보고서는 엔지니어 — 또는 AI 에이전트 — 에게 한 번도 본 적 없는 저장소에 대한
작동하는 멘탈 모델을 넘겨주기 위해 만들어진 단일 Markdown 브리프입니다. 이는 자체
완결적인 패키지입니다: 위험 방정식이 보고서 자체에 인쇄되어 있고, 내장된 해석 프롬프트를
통해 어떤 LLM이든 숫자가 의미하는 바를 환각 없이 서술할 수 있습니다. 섹션은 매크로 상태와
언어 구성, 네트워크 토폴로지(모듈성, 관절점, 순환 밀도), 의존성 병목 지점, 가장 무거운
함수와 파일, PageRank 블라스트 반경이 포함된 파일별 구조적 시그니처, 표적화 및 누적 위험
히트리스트, 공급망 감사, 그리고 변동성과 작성 집중도로 순위가 매겨진 리팩터링 대상을
다룹니다 — 여기에 더해 스캔을 *거부*한 모든 파일의 항목별 목록과 그 이유도 포함됩니다.
현재 엔진으로 2026-08-31에 스캔한 두 가지 예시입니다. 두 저장소 모두 공개되어
있습니다 — 어느 쪽이든 클론하고 `galaxyscope --llm-only <path>`를 실행하면 전체
브리프를 재현할 수 있습니다:
**curl** — 4,250개 아티팩트, 696개 스캔, C, Perl, Python, Shell, M4, Makefile에 걸쳐
112,653 LOC. 브리프는 `src/tool_setup.h`를 최상위 구조적 기둥(80개의 인바운드 연결)으로
순위 매기고, *Perl* 함수 — `tests/ftpserver.pl`의 `APPEND_imap`, Impact 2135, 1,672
LOC — 를 C 코드와 동일한 순위에서 저장소 전체 함수 히트리스트의 최상위에 올립니다.
이 교차 언어 그래프가 바로 제품입니다: 저장소의 모든 언어에 걸친 하나의 비교 가능한
신호 집합. 같은 브리프에 있는 솔직한 단서: 아티팩트의 16.4%만 스캔되었습니다 —
수집 필터가 바이너리, 생성된 코드, 테스트 데이터를 공격적으로 제거하며, 브리프의 §5는
확장자와 이유별로 모든 제외 항목을 항목화합니다.
**cics-genapp** (IBM의 CICS COBOL/DB2 샘플) — 92.1% 스캔: 44개 COBOL 프로그램,
29개 JCL 작업. 누적 구조적 표면 히트리스트는 `base/src/lgupdb01.cbl`(변이 표면 ~100%,
복잡도 부하 92%)로 시작하며, 저장소에서 가장 무거운 단락은
`UPDATE-POLICY-DB2-INFO` — `SELECT FOR UPDATE` 행 잠금 로직으로, 해당 프로그램의
유지보수자가 가장 먼저 보고 싶어 할 바로 그 지점입니다. 같은 브리프는 또한 한계를
명확히 보여줍니다: 실제 임포트 그래프가 없는 평면 아키텍처에서는 "구조적 기둥" 목록이
연결이 없는 파일들로 퇴화하며, 보고서는 이를 신뢰하기 전에 연결 수를 확인하라고
말합니다.
독립적으로 선정된 저장소에 대한 수백 개의 편집되지 않은 브리프가
[gitgalaxy-raw-output](https://github.com/squid-protocol/gitgalaxy-raw-output)에
커밋되어 있습니다; 이 저장소 자체의 항상 최신인 자체 스캔 브리프는
[`docs/gitgalaxy_architecture_brief.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/gitgalaxy_architecture_brief.md)에
있습니다.
### 하나의 그래프, 많은 소비자
| 소비자 | 질문 |
|---|---|
| 아키텍처 | 이 저장소는 무엇으로 구성되어 있는가? |
| 구조적 분석 | 함수, 클래스, API, 의존성, 제어 구조는 어디에 있는가? |
| 구조적 표면 프로파일 (이전의 위험 노출) | 주어진 구조적/내용 패턴은 어디에 집중되어 있는가? |
| 리팩터링 | 어떤 파일이 복잡하거나, 변경이 잦거나, 부하를 지탱하는가? |
| 공급망 | 디스크에 물리적으로 존재하는 의존성은 무엇인가? |
| AI 컨텍스트 | 에이전트가 알아야 할 아키텍처와 관계는 무엇인가? |
| 레거시 마이그레이션 | 변환해야 할 구조적 단위는 어디에 있는가? |
| 이력 분석 | 저장소가 진화함에 따라 측정된 노출은 어떻게 변하는가? |

------------------------------------------------------------------------
## 정확도, 측정된 것
위의 주장을 뒷받침하는 두 개의 상시 측정 프로그램이 있으며, 의존성 및 호출 그래프를
위한 세 번째 프로그램이 진행 중입니다. 전체 서사 — 방법론, 판정, 한계, 그리고 다음
단계 — 는 [검증 프로그램](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/validation.md)에 있습니다; 이것은 요약입니다.
### 구조적 검증: GitGalaxy vs Tree-sitter vs Ctags
GitGalaxy는 고정된 [Language Crucible](https://github.com/squid-protocol/language-crucible)
코퍼스에서 **Tree-sitter와 Universal Ctags**를 기준으로 벤치마크됩니다 — 45개 언어 중
24개가 세 도구 모두로, 13개가 두 도구로 평가되며, 모든 불일치는 실제 소스와 대조하여
조사되고 판정과 함께 기록됩니다(기록된 201개 불일치 형태 중 200개 검증됨). 해당
코퍼스에서 GitGalaxy의 검증된 함수 정밀도는 tree-sitter와 비교 가능한 31개 언어 전체에서
100%이며, 검증된 클래스 또는 인자 불일치에서 잘못된 것으로 판명된 도구가 결코 아닙니다.
한계: 세 개의 구조적 대상, 하나의 고정 코퍼스 — 일반적으로 "AST만큼 정확하게 파싱한다"는
것이 아닙니다.

### 그래프 검증: 임포트와 호출 (진행 중)
블라스트 반경, PageRank, "구조적 기둥"은 **임포트 그래프**에서 나옵니다. 함수 수준
순위는 **호출 그래프**에서 나옵니다. 아직 모든 언어에서 두 그래프가 측정되지는 않았으며,
아래 차트는 어느 것이 측정되었는지 보여줍니다:
- 측정된 언어는 n과 함께 정밀도와 재현율을 보여줍니다.
- 아직 측정되지 않은 모든 언어는 이름으로 나열됩니다.
2026-09-26 기준, 59개 언어 중:
- **임포트 그래프는 20개에서 측정됩니다.** 엔진 엣지는 고정된 실제 저장소에서 각 언어
자체의 임포트 문과 대조하여 확인됩니다
([`import_graph_accuracy.py`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/tests/tools/import_graph_accuracy.py)).
- **피호출자 이름은 11개에서 측정됩니다**, tree-sitter와 대조하여.
- **호출 해석은 3개에서 측정됩니다**, 참조 분석기와 대조하여:
- Python, pyan3 대비: 판정된 1,806개 링크에서 99.8% 정밀도, 51.6% 재현율;
- TypeScript, TypeScript 6.0.2 타입 검사기 대비: 판정된 1,520개 링크에서 99.9% 정밀도,
57.1% 재현율;
- Java, scip-java(javac 자체의 해석) 대비: 판정된 3,474개 링크에서 92.7% 정밀도,
41.0% 재현율. 오버로드된 메서드에 대한 호출은 인자 개수가 하나의 오버로드를 선택할
때만 링크됩니다 ([#3835](https://github.com/squid-protocol/gitgalaxy/issues/3835)).
호출 링크는 만들어질 때 대체로 정확하지만, 호출의 약 절반 이상이 링크되지 않은 채
남습니다. 따라서 함수 수준 팬인과 PageRank는 하한입니다.
한계:
- 나머지 38개 언어의 그래프는 같은 방식으로 구축되지만 **측정되지 않습니다**.
- 여러 측정된 언어가 임포트가 100개 미만인 저장소 하나에 의존합니다. 차트는 이를
흐리게 표시합니다.
- `*`는 소스와 대조한 판정을 아직 기다리는 불일치가 있는 숫자를 표시합니다.
이러한 격차를 해소할 계획은
[epic #3772](https://github.com/squid-protocol/gitgalaxy/issues/3772)입니다.

### 교차 언어 일관성: Keyword Rosetta 대조 코퍼스
더 새로운 프로그램은 반대 질문을 던집니다: **GitGalaxy가 모든 언어에서 동일한 의도를
동일하게 측정하는가?** [keyword-rosetta](https://github.com/squid-protocol/keyword-rosetta)
코퍼스는 동일한 12개 프로브 프로그램을 정확히 알려진 신호 개수와 함께 지원되는 50개
언어 모두에 심습니다 — 따라서 어떤 차이든 구조적으로 측정된 언어 편향입니다. 차트는
각 편차를 크기가 아니라 *원인*별로 색칠합니다: 빨강은 열린 엔진 결함(잘못된 구문에
일치하는 규칙, 또는 카운트 내부에 있는 점수 가중치)이고, 회색은 원장이 검증한 문서화된
변형입니다 — 언어가 구문을 표현할 수 없거나, 의도적인 점수 선택이거나, 다른 행의
에코입니다. 현재 답변: 평균적으로 언어의 94%가 게이트된 지표별로 교차 언어 중앙값의
±25% 이내에 있으며(차트화 가능한 56개 지표, 54개가 ≥80% 유지), **열린 결함 비율은
0.0%입니다(59개 게이트 지표에 걸쳐 2,844개 비교 가능 셀 중 1개)** — 새로 심어진
`bms`(CICS Basic Mapping Support) 코퍼스의 `classes_found`라는 단 하나의 설명되지 않은
셀; 다른 모든 대역 밖 셀은 원장이 검증한 변형(엄격성 계층, 언어가 표현할 수 없는 구문,
다른 행의 에코, 또는 의도적인 점수 선택)이며 열린 엔진 결함이 아닙니다. 가장 약한
지표는 숨기지 않고 이름이 밝혀집니다 — `cog_raw`는 언어의 74%를 대역 내에 유지하고,
`raw_arch_api`는 78%, `avg_func_args`는 80% — 그러나 이들의 하위 대역 셀은 결함이
아니라 문서화되어 있습니다. 이 주장은 확장에서도 살아남습니다: 코퍼스가 첫 번째
보안 렌즈 프로브 — 모든 언어에서 동일한 하나의 하드코딩된 시크릿 — 를 심었을 때,
`credential_material`(이전의 `risk_secrets_risk`; `risk_*` 이름은 DB 컬럼으로
남아 있습니다 — [`docs/vectors.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/vectors.md) 참조)은 **50개 언어 전체에서
균일한 점수**를 읽었습니다(컬럼당 동일한 25.000). 렌즈가 원래 건너뛰었던 두 개의
불활성 형식 예외와 공식의 측정된 길이 의존성은 같은 날 원장에 기록되고 이슈로
제출되었습니다([#2978](https://github.com/squid-protocol/gitgalaxy/issues/2978),
[#2979](https://github.com/squid-protocol/gitgalaxy/issues/2979)). #2978은
종료되었습니다: 렌즈는 이제 다섯 개의 불활성 형식(plaintext/markdown/json/yaml/csv)
모두에서 실행되며, 문서/설정 노이즈를 너무 많이 감수하는 저장소를 위한
`SECURITY_SCAN_INERT_FORMATS` 설정 옵트아웃이 있고, 병합된 수정에 대한
keyword-rosetta의 코퍼스 재검증은 이제 전적으로 대역 내에 들어옵니다(원장의
`secrets-lens-inert-formats` 항목). 모든 편차는 검증된 원장에 기록되고, 작업은
[계약 로드맵](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/contract_roadmap.md) 아래 원인 계열별로 추적되며, 이런 방식으로
발견된 결함 클래스는
[GitGalaxy 이슈로 제출됩니다](https://github.com/squid-protocol/keyword-rosetta/blob/main/docs/findings_by_language.md).

대조 코퍼스는 동일한 의도에 대한 측정 불평등을 증명하지만, 실제 코드에서의 정확도에
대해서는 아무것도 말하지 않습니다(위의 tri-comparison의 역할) — 그리고 파일별
상수 편향은 여전히 언어 *내에서*의 순위를 보존합니다.
[발생 보고서](https://github.com/squid-protocol/keyword-rosetta/blob/main/docs/incidence_report.md)는
확인된 각 형태를 실제 라이선스 코드에 대해 크기 산정합니다.
------------------------------------------------------------------------
## 실제 규모
예시: **Kubernetes** — Go, YAML, JSON, Shell, Proto에 걸쳐 약 139만 줄.
엔드투엔드 스캔: **50.83초**. 스캔 시간은 적합된 두 영역 모델을 따릅니다
(약 4.3K LOC 미만에서 평탄한 ~0.11초, 그 다음 `time(s) ≈ 3.36e-05 × LOC^0.969`,
599개 저장소에 걸쳐 R²=0.88) — 따라서 소수의 2천만+ LOC 이상치들은 여전히 몇 분이
걸리며, 빠른 스캔은 처리량을 증명할 뿐 통찰 품질을 증명하지 않습니다; 정확도
질문은 아래에서 별도로 다룹니다.

편집되지 않은 아티팩트는 [raw output
repository](https://github.com/squid-protocol/gitgalaxy-raw-output)를 참조하십시오.
------------------------------------------------------------------------
# 구조적 표면 프로파일: GitGalaxy가 주장하는 것 (이전의 "위험 노출")
GitGalaxy의 13개 파일별 벡터는 원래 `risk_*`로 명명되었고 **위험 노출 측정**으로
설명되었습니다. 이 섹션이 예전에 열어 두었던 질문 — "이 시그니처들이 의미 있는
소프트웨어 위험 클래스와 경험적으로 연관되어 있는가?" — 는 이제 단지 질문된 것이
아니라 테스트되었습니다. temporal-crucible 검증 프로그램(epic
[#2982](https://github.com/squid-protocol/gitgalaxy/issues/2982), 약 3,550개 스캔된
스냅샷, 두 저장소, 세 개의 레이블 계열, 데이터를 보기 전에 모든 테스트 사전 등록)이
그 실험을 철저히 실행했고, 솔직한 결과가 이름 변경을 이끌었습니다
([#2991](https://github.com/squid-protocol/gitgalaxy/issues/2991)): 벡터는 이제
**구조적 표면 프로파일**이라고 불립니다. `risk_*`는 호환성을 위해 DB 컬럼 / JSON 키
이름으로 남아 있습니다(전체 이름 표와 사용 중단 안내는
[`docs/vectors.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/vectors.md) 참조).
**기록이 발견한 것, 솔직하게 다시 서술하면:**
- **파일별 상시 위험, 반증됨.** 창립 가설 — 파일의 `risk_*` 수준, 또는 수정 후의
변화가 결함 확률을 추적한다는 것 — 은 성립하지 않았습니다. 보안 수정 후 중앙값
구조적 델타는 +0.000이었고(두 번째 독립 저장소에서 등가성 확인된 거의 0, 단지
유의하지 않은 것이 아님); 합산된 구조적 노출은 수정이 닿은 파일을 예측하는 데
여섯 개 특징 중 *최하위*로 순위 매겨졌으며; 26개 신호 다변량 구조적 벡터는 시간적
분할에서 우연 수준(AUC 0.479)을 기록하여 단순 줄 수(0.531)보다 낮았습니다. 전체
원장은 temporal-crucible의 `docs/HYPOTHESES.md`에 있으며
[#2982](https://github.com/squid-protocol/gitgalaxy/issues/2982)에서 링크됩니다.
- **벡터가 실제로 검증한 것:** 결함 확률이 아니라 **활동과 내용**을 설명하는 것.
수정 형태의 합성 지표는 보안 수정 → 일반 수정 → 대조 → 되돌리기 그라디언트를
안정적으로 추적하며; 델타는 실제 코드 이벤트(가드 코드 추가, 스레딩 도입, 부채
마커 희석)에 대응합니다. 이것이 이 문서가 이제 정확하게 명명하는 X-ray입니다 —
벡터별로 [`docs/vectors.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/vectors.md) 참조.
- **시스템 수준 / 이력 신호, 실제 예측적 발견으로 다시 서술.** 두 가지 특징이
검증에서 *살아남았습니다*: **재범성**(마지막 수정이 있었던 파일이 다음 수정을
받음 — 프로그램에서 가장 많이 복제된 결과, 두 저장소 모두에서 p<1e-4)과
**변경 엔트로피 / Hassan HCM**으로, 새로운 버그 레이블에서 선택 외 검증되었습니다
(AUC 0.868 대 줄 수의 0.830). 둘 다 구조적 내용 지표가 아니라 **이력** 지표이며 —
둘 다 현재 모든 스캔에서 0으로 설정되어 있습니다
(`GITGALAXY_DISABLE_GIT_HISTORY`,
[temporal-crucible#29](https://github.com/squid-protocol/temporal-crucible/issues/29)에서
추적). 이것은 별도의, 솔직하게 명명된 **예측 계층**의 씨앗입니다 —
`hist_stability`/`hist_churn` 벡터는 그 상태를 명시적으로 표시하도록 명명되었습니다
— 이력 활성화 모드를 출시한 다음
[#2987](https://github.com/squid-protocol/gitgalaxy/issues/2987)의 결함 리프트
승격 계약을 통과하는 것을 조건으로 합니다.
높은 구조적 표면 프로파일 판독값은 다음을 의미합니다:
> **이 위치는 저장소의 나머지 부분에 비해 주어진 구조적/내용 패턴이 더 많이
> 존재합니다.**
다음을 의미하지는 않습니다:
> "이 코드가 결함을 포함할 가능성이 더 높다" — 그 주장의 파일별 버전은 테스트되었고
> 성립하지 않았습니다.
기저 시그니처는 다음과 같은 영역과 관련된 패턴을 다룹니다:
- 시크릿
- 인젝션 표면
- 안전하지 않은/메모리 연산
- 동적 실행
- I/O
- 동시성
- 상태 변이
- 리플렉션
- API
- 의존성
- 엔트로피
- 기타 구조적/보안 특성
벡터별 이름 변경 표, 증거, 적절한/부적절한 사용은
[`docs/vectors.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/vectors.md)를, 이 섹션이 요약하는 전체 검증 원장은
[temporal-crucible](https://github.com/squid-protocol/temporal-crucible)의
`docs/HYPOTHESES.md`를 참조하십시오.
------------------------------------------------------------------------
# 주장이 아닌 증거
### Language Crucible
Godot, Roslyn, curl, Kubernetes, Apollo 11 비행 소프트웨어 같은 프로젝트를 포함하는
실제 소스의 고정된 코퍼스.
[Language Crucible](https://github.com/squid-protocol/language-crucible)
### 골든 마스터 회귀
실제 소스가 다시 스캔되어 체크인된 예상 출력과 비교되므로 파서 변경이 관찰 가능한
차이를 만듭니다.
[`tests/tools/update_golden_master.py`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/tests/tools/update_golden_master.py)로
재생성되며, 결코 수동으로 편집되지 않습니다.
### Tri-comparison
동일한 코퍼스가 커버리지가 존재하는 곳에서 GitGalaxy, Tree-sitter, Ctags와 대조
분석됩니다 — 45개 언어 중 24개가 세 도구 모두로 평가되고, 기록된 201개 불일치 중
200개가 검증되었습니다. 고정된 코퍼스에서 GitGalaxy는 검증된 함수 정밀도, 클래스,
또는 인자 불일치에서 잘못된 것으로 판명된 도구가 결코 아니며, 설계상 건너뛰는 하나의
중첩 셸 정의를 제외하고 모든 곳에서 tree-sitter의 함수 재현율과 일치합니다.
[방법론](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/self_scan/tri_comparison_README.md)과
[검증 프로그램](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/validation.md)에서 전체 그림과 그 한계를 참조하십시오.
### Keyword Rosetta 대조 코퍼스
동일한 12개 프로브 프로그램을 정확히 알려진 신호 개수와 함께 지원되는 50개 언어
모두에 심어 모든 지표의 교차 언어 일관성을 측정합니다 — 검증된 편차 원장과 그로
인한 엔진 결함이
[이슈로 제출됩니다](https://github.com/squid-protocol/keyword-rosetta/blob/main/docs/findings_by_language.md).
[Keyword Rosetta](https://github.com/squid-protocol/keyword-rosetta)
### 원시 저장소 출력
편집되지 않은 GitGalaxy 출력이 독립적으로 선정된 수백 개의 저장소에 대해 보존됩니다.
[Raw Output](https://github.com/squid-protocol/gitgalaxy-raw-output)
### 회귀 스위트
기본 스위트(`python -m pytest tests/`)에 **7,043개 테스트**가 있으며, 그중
**6,165개**가 45개 구조적 시그니처 언어 전체에 걸친 시그니처별 테스트입니다 —
긍정 일치, 명시적 제외, 적대적/ReDoS 입력. 세부 내역은
[`tests/README.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/tests/README.md)를, 이 추출이 AST 읽기를 능가하는 구체적이고
증거가 있는 사례는
[`docs/why_gitgalaxy_beats_ast_here.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/why_gitgalaxy_beats_ast_here.md)를
참조하십시오.
### Temporal Crucible (이력 검증)
구조적 표면 프로파일이 Git 이력 전반에 걸쳐 실제 보안 및 유지보수 이벤트에 대응하는지
여부는 더 이상 열린 질문이 아닙니다 — 테스트되었습니다.
[Temporal Crucible](https://github.com/squid-protocol/temporal-crucible) 프로그램은
두 저장소(curl, nDPI)와 세 개의 레이블 계열(CVE 수정/도입 커밋, 버그 레이블, CWE
계열)에 걸쳐 약 3,550개 저장소 스냅샷을 스캔했으며, 모든 확인 테스트는 데이터를 보기
전에 사전 등록되었습니다. 그것이 발견한 것, 솔직하게 서술하면:
- **파일별 상시 구조적 위험은 결함을 예측하지 않습니다** — 줄 수로 환원되며,
이는 두 번째 독립 저장소에서 등가성 테스트로 확인된 널입니다(단지 "유의하지
않음"이 아님).
- **두 개의 *이력* 지표는 예측합니다**: 재범성(마지막 수정이 있었던 파일이 다음
수정을 받음 — 두 저장소 모두에서 p<1e-4, 프로그램에서 가장 많이 복제된 결과)과
변경 엔트로피(Hassan HCM)로, 새로운 버그 레이블에서 선택 외 검증되었습니다.
- **구조는 설명하고, 이력은 예측합니다.** 원장에서 살아남은 것보다 죽은 예측이
더 많았습니다 — 그것은 실망이 아니라 사전 등록 규율이 작동한 것입니다.
전체 기록은 공개되어 있고 재현 가능합니다: 사전 등록된
[가설 원장](https://github.com/squid-protocol/temporal-crucible/blob/main/docs/HYPOTHESES.md)과
프로그램이 상관시키려 시도한 모든 것의
[예측자 × 결과 인덱스](https://github.com/squid-protocol/temporal-crucible/blob/main/docs/EXPERIMENTS.md).
설계와 방법:
[검증 프로그램](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/validation.md#the-next-validation-risk-over-git-history).
[Temporal Crucible](https://github.com/squid-protocol/temporal-crucible)
------------------------------------------------------------------------
# GitGalaxy란 무엇이며 --- 무엇이 아닌가
### GitGalaxy는
- 저장소 규모의 구조적 인텔리전스
- 언어에 구애받지 않는 소스 분석
- 이기종 코드에 걸친 공통 구조적 표현
- 위험 노출 우선순위화
- 아키텍처 매핑
- CI 네이티브 증거 생성
- 깨졌거나 컴파일되지 않은 저장소에서도 유용
- 로컬/오프라인 운영을 위해 설계됨
### GitGalaxy는 아니다
- CodeQL의 심층 데이터플로 분석의 대체물
- Semgrep의 규칙 생태계의 대체물
- 의존성 CVE 데이터베이스의 대체물
- 익스플로잇 가능성의 증명
- 런타임 분석기
- 완전한 언어 파서
- 높은 노출이 취약점이라는 보장
| 도구 | 주요 질문 |
|---|---|
| **GitGalaxy** | 이 전체 저장소는 구조적으로 어떤 모습이며, 어디에 먼저 주의를 기울여야 하는가? |
| Tree-sitter | 이 소스는 어떤 구문 구조를 포함하고 있는가? |
| Ctags | 탐색 가능한 코드 엔티티는 어디에 있는가? |
| Semgrep | 이 코드가 지정된 패턴과 일치하는가? |
| CodeQL | 더 깊은 분석으로 어떤 데이터/제어 관계를 확립할 수 있는가? |
| SCA/CVE 도구 | 이 의존성/버전이 알려진 권고와 연관되어 있는가? |
------------------------------------------------------------------------
# Git 이력과 아키텍처
GitGalaxy는 이미 churn, 기여자 집중도, bus-factor 노출, 리팩터링 핫스팟, 파일 소유권 및 시간적 활동과 같은 신호에 Git 이력을 통합하고 있습니다. 연구 방향은 이를 **맥락적 신호로서의 이력**에서 **노출 모델을 위한 외부 검증 소스로서의 이력**으로 확장하는 것입니다 — 실험 설계는 [검증 프로그램](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/validation.md#the-next-validation-risk-over-git-history)에 있습니다.
------------------------------------------------------------------------
# 프라이버시와 배포
GitGalaxy는 로컬 및 에어갭 환경에서의 운영을 위해 설계되었습니다.
- 소스 코드는 GitGalaxy 클라우드 서비스로 전송되지 않습니다.
- 스캔과 벡터화는 로컬에서 수행됩니다.
- 스캐너는 런타임 네트워크 요구 사항이 없습니다.
- CI/CD 실행은 사용자 환경 내부에 머물 수 있습니다.
- 브라우저 시각화 도구는 로컬에서 제공된 데이터로 작동합니다.
------------------------------------------------------------------------
# 설치
``` bash
pip install gitgalaxy # zero install dependencies
pip install "gitgalaxy[full]" # + tiktoken, xgboost, pandas, numpy, pyyaml
```
현재 명령과 구성에 대해서는 [문서](https://squid-protocol.github.io/gitgalaxy/)를 참조하십시오.
### 제로 의존성 모드
일반 `pip install gitgalaxy`는 아무것도 끌어오지 않습니다. 모든 서드파티 패키지가 공급망 문제인 환경을 위한 것입니다. 스캔은 여전히 실행됩니다. 모든 구조적 신호, 의존성 엣지, in/out-degree 카운트, PageRank / blast radius, betweenness, closeness, 평균 경로 길이, modularity, 순환 밀도, articulation point 및 assortativity는 전체 정밀도와 정확히 동일하게 측정됩니다(이들은 네이티브로 계산됩니다). 선택적 엔진이 필요한 것은 토큰 질량과 읽기 비용(`tiktoken`), ML 위협 분류(`xgboost`/`pandas`/`numpy`) 및 YAML 구성/OpenAPI 파싱(`pyyaml`)입니다. 계산되지 않은 메트릭은 0이 아니라 부재(`n/a` / NULL)로 보고됩니다. 각 출력은 스캔이 이 모드에서 실행되었을 때를 알려주며, [`docs/zero_dependency_mode.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/zero_dependency_mode.md)는 어떤 필드가 동일하고 어떤 필드를 사용할 수 없는지 필드별로 나열합니다.
### CI/CD
GitHub Actions, GitLab CI, Bitbucket Pipelines, Azure Pipelines 및 일반 셸 호출 가능 CI 환경을 위한 템플릿이 제공됩니다. [`templates/`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/templates) 및 [CI 통합 가이드](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/github-action-readme.md)를 참조하십시오.
------------------------------------------------------------------------
# 증거 탐색
| 리소스 | 포함 내용 |
|---|---|
| [문서](https://squid-protocol.github.io/gitgalaxy/) | 아키텍처, 주장 및 방법론 |
| [검증 프로그램](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/validation.md) | 전체 증명 서사: 논제, 벤치마크, 유효성 사다리, 다음 실험 |
| [벡터 레퍼런스](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/vectors.md) | 13개의 파일별 벡터: 이름, 의미, 증거 및 `risk_*` 지원 중단(deprecation) 노트 |
| [벡터 공식 팩트](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/vector_formulas.md) | 계산기별 기계적 공식 감사(입력, 산술, 상수) |
| [Language Crucible](https://github.com/squid-protocol/language-crucible) | 교차 언어 벤치마크 및 골든 코퍼스 |
| [Keyword Rosetta](https://github.com/squid-protocol/keyword-rosetta) | 50개 언어 심어진 대조 코퍼스 및 편향 보고서 |
| [원시 출력](https://github.com/squid-protocol/gitgalaxy-raw-output) | 실제 저장소의 편집되지 않은 스캔 |
| [COBOL → Java 예제](https://github.com/squid-protocol/cobol_to_java_examples) | 컴파일되는 Spring Boot 아키텍처로 자동 변환된 10개의 COBOL 저장소(`mvn clean compile`이 즉시 작동) |
| [모집단 분석](https://github.com/squid-protocol/gitgalaxy-population-analyses) | 원시 출력 스캔 모집단에 대한 통계 분석: 아키타입 클러스터링, 위험 분포, 위협 분류기 연구 |
| [코드 박물관](https://squid-protocol.github.io/gitgalaxy/museum-of-code/) | 실제 코드베이스의 전체 아키텍처 해체(Apollo 11, IBM CICS 벤치마크) |
| [배포 원격 측정](https://github.com/squid-protocol/squid-telemetry) | GitHub/GitLab/[PyPI](https://pypi.org/project/gitgalaxy/) 전반의 공개 페치 메트릭, 매일 재생성됨 |
| [`tests/README.md`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/tests/README.md) | 회귀 및 골든 마스터 방법론 |
| [`tri_comparison_ledger.json`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/self_scan/tri_comparison_ledger.json) | 불일치별 검증 기록 |
| [`manual_verification.json`](https://gitlab.com/squid-protocol1/gitgalaxy/-/blob/main/docs/self_scan/manual_verification.json) | 비교기 커버리지를 사용할 수 없는 검토된 사례 |
---
[Read more](https://gitlab.com/squid-protocol1/gitgalaxy)