Edges
노드를 연결하는 간선 아홉 종류와, 시작점을 찾을 때 따라가는 간선입니다.
간선은 9종이고 제어 의존, 데이터 의존, 구조의 세 갈래로 나뉩니다. 시작점을 찾을 때는 제어 의존 간선만 따라갑니다.
| 간선 | 갈래 | 뜻 | 시작점을 찾을 때 |
|---|---|---|---|
| performs | 제어 의존 | 호출이 그 할 일을 수행한다 (Call → Task) | 계속 올라감 |
| substep_of | 제어 의존 | 할 일이 앞선 할 일을 쪼갠 한 단계다 (Task → Task) | 계속 올라감 |
| advances | 제어 의존 | 할 일이 요청이나 맡긴 문서의 주제를 진행시킨다 | 멈춤 |
| instructed_by | 제어 의존 | 문단이 이 할 일을 시켰다 | 멈춤 |
| responds_to | 제어 의존 | 할 일이 직전 오류에 대응한다 | 멈춤 |
| value_from | 데이터 의존 | 값이 그곳에 그대로 적혀 있다 | 따라가지 않음 |
| derived_from | 데이터 의존 | 값이 그곳에서 가리키거나 계산한 대상이다 | 따라가지 않음 |
| part_of | 구조 | 인자가 호출에 속한다 | 따라가지 않음 |
| produced_by | 구조 | 문단이 그 호출의 결과로 들어왔다 | 따라가지 않음 |
간선은 세 가지 규칙을 지켜서 만듭니다.
- 허용된 (짝, 종류) 조합 17개 안에서만 만듭니다.
- 의존받는 쪽은 먼저 관찰된 노드여야 합니다.
- Jev로 연결하는 간선은 점수가 기준 점수를 넘을 때만 만듭니다. 기준 점수는 지금 임시 값 0.5를 쓰고, 실제 데이터로 다시 정합니다.
제어 의존만 따라가는 이유
Section titled “제어 의존만 따라가는 이유”구조 간선까지 따라가면 공격이 통과합니다. 숨긴 문단이 “이슈를 읽은 호출의 결과”(produced_by)를 거쳐 사용자 요청까지 올라가기 때문입니다.
데이터 의존 간선까지 따라가면 정상 호출이 막힙니다. 주소만 문서에서 가져온 호출도 시작점이 문서가 되기 때문입니다.
한 할 일에서 여러 간선이 기준을 넘었을 때 어느 쪽을 따라가는지는 Provenance Tracer에 있습니다.
간선을 만드는 모듈
Section titled “간선을 만드는 모듈”| 간선 | 만드는 모듈 |
|---|---|
| part_of | Call Parser |
| value_from | Token Index |
| performs, substep_of, advances, instructed_by, responds_to | Provenance Tracer |
| produced_by, derived_from | 아직 정하지 않음 |
- 허용 조합 17개의 목록. 인계 문서에는 개수만 있습니다. 짝이 명시된 간선은 performs(Call → Task)와 substep_of(Task → Task)뿐입니다. 나머지는 뜻으로 미루어 짐작할 수 있지만, “할 일 없음”일 때 호출을 후보와 직접 짝짓는 경우까지 포함해 목록으로 정해야 합니다.
- produced_by와 derived_from을 어느 모듈이 언제 만드는지.
