Skip to main content
QUICK REVIEW

[논문 리뷰] Automatically generating features for learning program analysis heuristics

Kwonsoo Chae, Hakjoo Oh|arXiv (Cornell University)|2016. 12. 30.
Software Testing and Debugging Techniques참고 문헌 24인용 수 3
한 줄 요약

이 논문은 프로그램 리듀서를 사용하여 대표적인 프로그램-질의 쌍을 축소하고 추상화함으로써 데이터 기반 정적 프로그램 분석을 위한 특징을 자동으로 생성하는 프레임워크를 제안한다. 이 방법은 기계 학습이 효과적인 분석 히ュ리스틱을 유도할 수 있도록 컴act하고 일반화 가능한 코드 스니펫을 부울 특징으로 생성한다; 실험 결과, 세 가지 C 프로그램 분석에서 수작업으로 설계된 특징과 비교해 유사한 성능을 보였다.

ABSTRACT

We present a technique for automatically generating features for data-driven program analyses. Recently data-driven approaches for building a program analysis have been proposed, which mine existing codebases and automatically learn heuristics for finding a cost-effective abstraction for a given analysis task. Such approaches reduce the burden of the analysis designers, but they do not remove it completely; they still leave the highly nontrivial task of designing so called features to the hands of the designers. Our technique automates this feature design process. The idea is to use programs as features after reducing and abstracting them. Our technique goes through selected program-query pairs in codebases, and it reduces and abstracts the program in each pair to a few lines of code, while ensuring that the analysis behaves similarly for the original and the new programs with respect to the query. Each reduced program serves as a boolean feature for program-query pairs. This feature evaluates to true for a given program-query pair when (as a program) it is included in the program part of the pair. We have implemented our approach for three real-world program analyses. Our experimental evaluation shows that these analyses with automatically-generated features perform comparably to those with manually crafted features.

연구 동기 및 목표

  • 데이터 기반 프로그램 분석의 주요 장애물인 입력 특징 설계의 노동 집약적이고 전문가 의존적인 과정을 해결하기 위해.
  • 정밀도 향상이 분석 결과에 크게 기여하는 패턴을 포착하는 의미 있고 일반화 가능한 특징을 자동 생성하기 위해.
  • 수작업 특징 공학 없이도 효과적인 분석 히ュ리스틱 학습을 가능하게 하여 도메인 전문 지식에 대한 의존도를 낮추기 위해.
  • 예를 들어 구간, 포인터, 옥타곤 분석과 같은 다양한 정적 분석 유형에 일반화하기 위해, 추상화된 프로그램 스니펫을 특징으로 사용함으로써.
  • 자동으로 생성된 특징이 수작업으로 설계된 특징과 동등한 성능을 보이는지 실험적으로 입증하기 위해.

제안 방법

  • 코드베이스에서 유래한 프로그램-질의 쌍에 대해 프로그램 리듀서(예: C-Reduce)를 적용하여 고정밀도 분석 동작을 유도하는 최소화되고 대표적인 코드 스니펫을 생성한다.
  • 각 축소된 프로그램을 특정 프로그램-질의 쌍에 존재할 경우 참으로 평가되는 부울 특징으로 간주한다.
  • 축소된 프로그램을 데이터 플로우 그래프로 추상화하여 패턴을 일반화하고 재사용 가능한 언어 독립적 특징을 생성한다.
  • 추상화된 특징을 적용하여 매개변수 기반 정적 분석에 최적의 설정을 학습하는 기계 학습 모델을 훈련한다.
  • 무한한 추상 도메인을 가진 다양한 C 프로그램 분석에 적용 가능한 통합된 프레임워크로 특징 생성과 히ュ리스틱 학습을 통합한다.
  • 정적 분석의 내부 논리에 대한 액세스가 필요 없는 블랙박스 접근 방식을 채택하여 일반화 능력을 향상시킨다.

실험 결과

연구 질문

  • RQ1프로그램 축소를 사용하여 의미 있고 최소한의 코드 스니펫을 자동 생성하여 프로그램 분석 히ュ리스틱 학습을 위한 효과적인 특징으로 활용할 수 있는가?
  • RQ2축소된 프로그램에서 유도된 추상화된 데이터 플로우 그래프가 다양한 프로그램 패턴을 일반화하여 강력하고 재사용 가능한 특징이 될 수 있는가?
  • RQ3자동으로 생성된 특징을 사용해 학습한 히ュ리스틱이 수작업으로 설계된 특징을 사용해 학습한 히ュ리스틱과 얼마나 유사한 성능을 보이는가?
  • RQ4제안된 방법이 구간 및 옥타곤 분석과 같이 무한한 추상 도메인을 가진 다양한 정적 분석 유형으로 확장 가능한가?
  • RQ5분석에 특화된 깊은 지식 없이도 이 프레임워크를 실제 코드베이스에 효과적으로 적용할 수 있는가?

주요 결과

  • 제안된 방법은 부분적으로 흐름 감지 가능한 구간 분석, 포인터 분석, 부분적 옥타곤 분석을 포함한 세 가지의 서로 다른 정적 분석에 관련된 특징을 성공적으로 생성하였다.
  • 자동으로 생성된 특징을 사용해 학습한 히ュ리스틱은 리눅스 및 GNU 패키지의 60개 프로그램에서 검증된 결과, 수작업으로 설계된 특징을 사용한 히ュ리스틱과 유사한 성능을 보였다.
  • 추상화된 프로그램 스니펫을 특징으로 사용함으로써, 무한한 추상 도메인을 가진 다양한 분석 유형에 대한 일반화 능력이 입증되었다.
  • 프로그램 리듀서를 사용해 최소화되고 행동적으로 의미 있는 코드 스니펫을 생성하는 것이 정밀도 향상이 측정 가능한 이점을 가져다주는 패턴을 효과적으로 포착하는 데 유용함을 입증하였다.
  • 전문가 기반 특징 공학의 필요성을 크게 줄여 데이터 기반 정적 분석 기법의 도입 장벽을 낮추었다.
  • 문자 수준의 CNN 기반 딥러닝 베이스라인은 흐름 감지 필요성을 예측할 때 정밀도 27%와 재현율 93%에 머물러 있어, 제안된 특징 생성 방법의 우수성을 강조한다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.