[SE] Automatic Program Repair : SAVER

parkheeddong·2023년 6월 8일
0

Software Engineering

목록 보기
14/19
post-thumbnail

🌳 SAVER 동작 방식


1. 오류가 존재하는 프로그램을 Input으로 받고, 정적분석기(Infer)가 프로그램을 직접 실행하지 않고도 특정 부분에 에러가 있을것 같다는 Error Report를 낸다.
2. SAVER가 해당 오류를 자동으로 고친다.

✅ Example

memory leak이 발생한다.

else 브랜치를 타면, free(q)만 될 뿐 p는 free되지 않는다.

-> 조건문을 넣어서 문제를 해결한다.

if (!c) 
  free(p);

와 같은 방식으로 해결할 수있다.

1. Object Flow Graph (OFG)를 그린다.


2. 오류를 발생시키는 PATH를 찾는다.

FREE 다음 Unreach해야 되는데, free가 빠져 있기 때문이다.

3. relabeling을 시킨다. relabeling 이후 실제 코드로 만들어낸다.

🌳 cost를 줄이기 위한 방법

object flow graph를 그리는 비용이 비싸기 때문에 다음과 같은 방법들이 이용된다.

program slicing

프로그램 중 error 리포트와 관련있는 부분만 추출하여 그래프를 그린다.

path merging heuristic

만약 브랜치가 있어도 큰 차이가 없으면 그냥 path를 하나로 본다.

0개의 댓글