Skip to content
GitHub

Edges

노드를 연결하는 간선 아홉 종류와, 시작점을 찾을 때 따라가는 간선입니다.

간선은 9종이고 제어 의존, 데이터 의존, 구조의 세 갈래로 나뉩니다. 시작점을 찾을 때는 제어 의존 간선만 따라갑니다.

간선 갈래 뜻 시작점을 찾을 때
performs 제어 의존 호출이 그 할 일을 수행한다 (Call → Task) 계속 올라감
substep_of 제어 의존 할 일이 앞선 할 일을 쪼갠 한 단계다 (Task → Task) 계속 올라감
advances 제어 의존 할 일이 요청이나 맡긴 문서의 주제를 진행시킨다 멈춤
instructed_by 제어 의존 문단이 이 할 일을 시켰다 멈춤
responds_to 제어 의존 할 일이 직전 오류에 대응한다 멈춤
value_from 데이터 의존 값이 그곳에 그대로 적혀 있다 따라가지 않음
derived_from 데이터 의존 값이 그곳에서 가리키거나 계산한 대상이다 따라가지 않음
part_of 구조 인자가 호출에 속한다 따라가지 않음
produced_by 구조 문단이 그 호출의 결과로 들어왔다 따라가지 않음

간선은 세 가지 규칙을 지켜서 만듭니다.

  1. 허용된 (짝, 종류) 조합 17개 안에서만 만듭니다.
  2. 의존받는 쪽은 먼저 관찰된 노드여야 합니다.
  3. Jev로 연결하는 간선은 점수가 기준 점수를 넘을 때만 만듭니다. 기준 점수는 지금 임시 값 0.5를 쓰고, 실제 데이터로 다시 정합니다.

구조 간선까지 따라가면 공격이 통과합니다. 숨긴 문단이 “이슈를 읽은 호출의 결과”(produced_by)를 거쳐 사용자 요청까지 올라가기 때문입니다.

데이터 의존 간선까지 따라가면 정상 호출이 막힙니다. 주소만 문서에서 가져온 호출도 시작점이 문서가 되기 때문입니다.

한 할 일에서 여러 간선이 기준을 넘었을 때 어느 쪽을 따라가는지는 Provenance Tracer에 있습니다.

간선 만드는 모듈
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을 어느 모듈이 언제 만드는지.