← 최신 논문
💻 computer science

ATLAS: Multi-View Code Representation Tool for C and C++ Source Programs

ATLAS는 완전한 빌드 과정 없이도 C 및 C++ 소스 파일로부터 정렬된 추상 구문 트리, 제어 흐름 그래프, 데이터 흐름 그래프를 직접 생성하여 JSON, DOT 또는 PNG 형식의 다중 뷰 표현을 생성하는 오픈 소스 명령줄 도구입니다.

원저자: Jaid Monwar Chowdhury, Ahmad Farhan Shahriar Chowdhury, Humayra Binte Monwar, Mahmuda Naznin

게시일 2026-07-02
📖 4 분 읽기☕ 가벼운 읽기

원저자: Jaid Monwar Chowdhury, Ahmad Farhan Shahriar Chowdhury, Humayra Binte Monwar, Mahmuda Naznin

원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기

당신은 수천 개의 작은 브릭으로 만들어진 거대하고 정교한 레고 성을 가지고 있다고 상상해 보세요. 당신은 이 성이 어떻게 작동하는지 이해하고 싶지만, 완성된 성을 보는 것만으로는 충분하지 않습니다. 당신에게는 세 가지 특정한 설계도가 필요합니다:

  1. 형태 설계도 (Shape Blueprint): 브릭들이 어떻게 쌓여 있는가 (구문/Syntax).
  2. 교통 설계도 (Traffic Blueprint): 사람이 방과 복도를 어떻게 걸어 다니는가 (제어 흐름/Control Flow).
  3. 물자 설계도 (Supply Blueprint): 무언가를 만들기 위해 재료들이 한 방에서 다른 방으로 어떻게 이동하는가 (데이터 흐름/Data Flow).

수년 동안, 만약 특정 유형의 성(C 및 C++ 코드)에 대한 이 설계도들을 얻고 싶다면, 먼저 건설 팀이 건물을 완성할 때까지 기다려야 했습니다. 만약 브릭 하나라도 빠져 있다면(누락된 파일이나 헤더 파일), 건설 팀은 작업을 중단할 것이고, 당신은 설계도를 전혀 얻지 못하게 됩니다.

ATLAS의 등장.

ATLAS는 성이 완성되지 않았더라도 상관하지 않는 초스마트 즉석 스캐너와 같습니다. 그것은 흩어진 브릭 더미, 절반쯤 지어진 벽, 또는 완성된 성을 보고도 즉시 당신을 위해 세 가지 설계도를 모두 그려낼 수 있습니다.

이것이 어떻게 작동하는지, 쉬운 비유를 통해 설명하겠습니다:

1. "공사 중 금지 구역" 규칙

대부분의 도구들은 엄격한 건축가와 같아서, "건물을 다 짓고 공식 허가증을 가져오기 전까지는 지도를 그릴 수 없습니다"라고 말합니다. 만약 헤더 파일(작은 지침서) 하나라도 빠져 있다면, 그들은 포기해 버립니다.

ATLAS는 다릅니다. 그것은 미완성된 퍼즐을 보고도 "상자에 그려진 그림이 없어도 이 조각이 어디에 들어갈지는 알 수 있습니다"라고 말하는 탐정과 같습니다. ATLAS는 프로젝트의 일부가 누락되었거나 코드가 실제로 컴파일되지 않더라도 코드를 직접 분석할 수 있습니다. 이는 원시 소스 텍스트를 바탕으로 직접 작동합니다.

2. "유니버설 ID 태그" 시스템

보통 하나의 도구에서 '형태 설계도'를 얻고 다른 도구에서 '교통 설계도'를 얻으면, 그들은 서로 다른 번호 체계를 사용합니다. 이는 마치 한 지도는 "101호실"이라고 표시하고, 다른 지도는 "파란색 복도"라고 표시하는 것과 같아서, 이들을 쉽게 매칭할 수 없습니다.

ATLAS는 모든 코드 조각에 유니버설 ID 태그를 부여합니다.

  • x라는 이름의 변수는 형태, 교통, 물자 설계도 모두에서 동일한 ID를 가집니다.
  • 이 태그들을 공유하기 때문에, 당신은 설계도들을 서로 조합할 수 있습니다. 교통 지도만 보거나, 물자 라인만 보거나, 혹은 교통 라인은 빨간색이고 물자 라인은 파란색인 상태로 하나의 지도 위에 겹쳐진 통합 뷰를 볼 수 있습니다.

3. "확대 및 필터링" 기능

때때로 설계도가 너무 많은 세부 사항(예: 모든 숫자나 반복되는 변수 이름) 때문에 읽기 너무 복잡할 때가 있습니다.
ATLAS에는 코드를 다시 스캔할 필요 없이 내용을 정리할 수 있는 세 가지 "마법 버튼"(명령줄 플래그)이 있습니다:

  • 축소 (Collapse): "count"라는 단어가 50번 나타난다면, 이 버튼은 이들을 하나의 큰 노드로 합칩니다. 마치 모든 "주방" 방들을 하나의 "주방 구역"으로 그룹화하는 것과 같습니다.
  • 블랙리스트 (Blacklist): ATLAS에게 "숫자는 보여주지 마"라고 말할 수 있습니다. 그러면 ATLAS는 즉시 모든 숫자 브릭을 제거하고 구조만 남깁니다.
  • 선택 보기 (View Selection): 교통 지도만 요청하거나, 물자 지도만 요청하거나, 혹은 둘 다 요청할 수 있습니다.

4. 얼마나 뛰어난가?

저자들은 거대한 오픈 소스 라이브러리(TheAlgorithms)를 대상으로 ATLAS를 테스트했습니다.

  • 성공률: ATLAS는 C 파일의 96.8%, C++ 파일의 **91.7%**에 대해 정확한 "교통 설계도"(제어 흐름 그래프)를 그려냈습니다.
  • "고장 난" 파일들: 일반적인 컴퓨터로는 컴파일할 수 없을 정도로 망가진 파일들에 대해서도, ATLAS는 여대히 지도를 정확하게 그려냈습니다.
  • 실제 활용: ATLAS는 이미 코드에 대한 테스트 케이스를 작성하는 AI 시스템(SPARC)의 "눈" 역할을 하는 데 사용되고 있습니다. ATLAS가 코드의 움직임을 매우 명확한 지도로 제공하기 때문에, AI는 이전보다 더 나은 테스트를 작성할 수 있습니다.

5. 아직 할 수 없는 것 (현재 기준)

ATLAS는 놀랍지만, 마법은 아닙니다. ATLAS는 몇 가지 약점이 있음을 인정합니다:

  • "고스트" 포인터(포인터가 메모리 내부의 숨겨진 곳을 가리키는 경우)를 추적하는 데 서툽니다.
  • 고급 템플릿이나 연산자 오버로딩 같은 복잡한 C++ 기능 처리에 어려움을 겪습니다.
  • 아직 "메가 사이즈" 프로젝트(수백만 줄의 코드)에 대해서는 테스트되지 않았으며, 규모가 작거나 중간 정도인 프로젝트에서만 테스트되었습니다.

결론

ATLAS는 연구자와 개발자들이 전체 몸체를 먼저 구축하지 않고도 C 및 C++ 코드의 "골격"을 볼 수 있게 해주는 도구입니다. 이것은 구조, 움직임, 그리고 데이터 흐름을 하나의 통합된 지도로 정렬하여, 컴퓨터(그리고 인간)가 소프트웨어를 이해하고, 분석하고, 개선하는 것을 훨씬 쉽게 만들어 줍니다. ATLAS는 무료이며 오픈 소스이고, "Docker" 박스로 제공되어 누구나 수십 개의 도구를 따로 설치할 필요 없이 바로 실행할 수 있습니다.

연구 분야의 논문에 파묻히고 계신가요?

연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.

Digest 사용해 보기 →