Context tunneling [Jeon, Jeong, Oh, OOPSLA 2018]은 $k$-limited context-sensitive points-to analysis의 정밀도와 확장성을 동시에 향상시키는 강력한 기법이다. 핵심 아이디어 자체는 단순하고 우아하다: 모든 호출 지점에서 무조건 context를 갱신하는 대신, 중요한 context element만을 선택적으로 유지한다. 1-context-sensitive + tunneling이 4가지 flavor 모두에서 2-context-sensitive를 outperform하는 결과는 이 아이디어의 잠재력을 명확히 보여준다.
그러나 이 아이디어를 실현하는 방법 — 즉 어떤 context element가 “중요한지”를 결정하는 방법 — 은 단순하지도, 원칙적이지도, 구현이 쉽지도 않다.
원 논문의 data-driven 접근법은 다음과 같은 복잡한 파이프라인을 요구한다:
Atomic feature 설계 (Table 1): 23개의 수작업 설계된 feature — 10개의 시그니처 기반 feature(A1-A10)와 13개의 구조적 feature(B1-B13). Feature 집합의 선택이 결과에 큰 영향을 미치며(Table 5), 다른 언어·분석·도메인으로 전이 시 feature를 재설계해야 함
Boolean formula 모델 (§4.2): Tunneling relation을 두 개의 boolean formula $\Pi = \langle f_1, f_2 \rangle$로 parameterize. $f_1$은 child에 context를 전달하는 메서드, $f_2$는 parent로부터 context를 상속하는 메서드를 특성화. DNF(Disjunctive Normal Form)로 표현
Non-greedy 학습 알고리즘 (Algorithm 1-3): Seed feature 선택(ChooseSeed) → conjunctive refinement(RefineSeed with ChooseRefiner) → 평가(BetterHeuristicFound, HasPotential) → 반복. Non-monotonic 공간을 탐색하기 위한 정교한 전략
Training infrastructure: 학습에 53~137시간 소요. DaCapo 스위트의 training/test 분할, 정밀 분석기(Doop) 실행 환경, 대규모 Java 프로그램의 fact 생성 등 인프라 필요
분석 프레임워크 의존성: Doop [Bravenboer & Smaragdakis, 2009] 프레임워크 위에서 구현. Doop의 Datalog 규칙을 수정하여 tunneling을 통합 (Figure 4의 규칙 변경)
이 복잡성은 context tunneling의 채택 장벽(adoption barrier) 을 형성한다:
Context tunneling의 아이디어 는 보편적이고 강력하지만, 현재의 실현 방법 은 language-specific, framework-specific, feature-engineering-heavy하다. 다음과 같은 접근법은 아직 탐구되지 않았다:
Context tunneling의 효과를 달성하면서, 단순하고(simple), 원칙적이며(principled), 구현이 쉬운(easy-to-implement) tunneling 기법을 개발한다.