서지주요정보
Improving precision and scalability of Javascript static analysis by parameterization = 정적분석의 매개변수화를 통한 자바스크립트 정적분석을 더 정확하고 큰 프로그램을 분석하는 방법
서명 / 저자 Improving precision and scalability of Javascript static analysis by parameterization = 정적분석의 매개변수화를 통한 자바스크립트 정적분석을 더 정확하고 큰 프로그램을 분석하는 방법 / Hongki Lee.
발행사항 [대전 : 한국과학기술원, 2020].
Online Access 원문보기 원문인쇄

소장정보

등록번호

8040068

소장위치/청구기호

학술문화관(문화관) 보존서고

DCS 20034

휴대폰 전송

도서상태

이용가능(대출불가)

사유안내

반납예정일

리뷰정보

초록정보

JavaScript has various dynamic features, and it helps to develop programs quickly. However, such features make it hard to understanding program behaviors and verification of run-time errors. Static analysis is a solution to answer the problems. While the results of static analysis help to infer program behaviors at run-time, it can also include infeasible errors that do not appear since the static analysis over-approximates run-time behaviors. In JavaScript static analysis, the over-approximation on dynamic features leads to a huge amount of computations because of control flow explosions, and scalability problems. To improve precision and scalability, static analysis users discover main causes of imprecision and either suggest analysis techniques or design new techniques to address the problems. JavaScript static analysis researchers have inspected such problems manually.In this thesis, we make JavaScript static analysis to automatically perform two stages for improving precision and scalability: finding main causes of imprecision and selecting analysis techniques. First, we present a novel technique that generates a graph to identify main causes of imprecision. The graph contains data-flow information from imprecise program points to the starting points of the imprecision. In the graph, we propose four common node/edge patterns to enable automatic detection of the four common main causes of analysis imprecision. Previous studies have changed components of static analysis to eliminate such main causes of imprecision. To discover the influence of components, we survey static analysis studies that change components according to program characteristics and classify the components in four analysis parameters: analysis sensitivity, state abstraction, initial abstract state, and abstract transfer function. In addition, many program attributes have been used to choose proper components, and we classify them into syntactic attributes and semantic attributes. Through this survey, we introduce a partial loop sensitive analysis technique on loop analysis to improve scalability than fully loop sensitive analysis. When static analysis uses partial loop sensitivity, it separates loop iterations only when the iterations require loop sensitive analysis to get precise analysis results. Our technique chooses variables and their values to adopt partial loop sensitivity.We experimentally demonstrated that our technique could identify main causes of imprecision, using graphs and patterns. The evaluation shows that the technique found 96 % (144/150) of the main causes of imprecision problems in 17 JavaScript applications through four common patterns, and analyzed five more JavaScript programs that show timeout in a state-of-the-art analyzer SAFELSA. Next, we evaluate a partial loop sensitive analysis technique in two perspectives: scalability and precision. This technique reduces 5% of analysis time and 19% analysis iterations on average. For the perspective of precision, we inspect two metrics in property accesses: the number of object dereference points with multiple objects (MultiDeref), and the number of object property accesses with a property name with non-constant value (MultiProp). The number of MultiDeref and MultiProp grows 0.56% and 29.34%, respectively. From the evaluation, we conclude that a partial loop sensitive analysis technique improves scalability while losing precision.

자바스크립트는 동적인 특징을 포함하고 있어 다양한 프로그램을 개발하는데 많이 쓰이지만, 이러한 특징들 로 인해 프로그램의 행동을 이해하거나 오류를 탐지하는데에는 어려움이 있다. 이 문제를 해결하는 방법중 하나가 프로그램을 정적 분석 하는 것이다. 프로그램 정적 분석을 통해 프로그램의 행동을 유추하는 장점이 있는 반면, 실행중에 나타나지 않는 프로그램의 오류를 포함하고 있을 수 있다. 이러한 프로그램의 오류는 정적 분석이 가능한 프로그램 실행상태를 모두 포함하도록 요약하기 위해 부정확한 분석을 하기 때문에 나타난다. 자바스크립트 정적 분석에서는 동적인 특징들을 부정확하게 분석하면 실제 도달하지 않는 프로 그램의 실행상태까지 분석하게되어 분석기의 확장성이 낮아진다. 정적 분석의 정확도와 확장성을 높이기 위해서는 정적 분석 결과가 부정확해지는 원인을 찾아내고, 그 원인을 제거하기위해 더 정확한 결과를 내는 정적분석을 해야 한다. 자바스크립트 정적분석에서는 정적 분석이 부정확해지는 원인과 해결책을 분석기 사용자가 직접 조사 해 왔다.본 학위 논문에서는 점진적으로 더 정확한 정적분석을 하기 위해 이 두 과정을 자동화했다. 먼저, 자바스 크립트 정적분석이 부정확해지는 원인을 알아내기 위해 분석이 부정확한 지점부터 정확해지는 지점까지의 흐름정보를 그래프로 나타냈으며, 이 그래프 안에서 분석이 부정확해지는 원인을 찾을 수 있는 네가지 패턴을 정의했다. 이렇게 찾은 분석이 부정확해지는 원인은 정확한 분석을 하는 정적분석 부품으로 교체함으로써 제거 해 왔다. 정적분석 부품들이 분석이 부정확해지는 원인에 미치는 영향을 알기 위해, 정적분석의 부품의 종류에 따라 분석 민감도, 상태 요약, 분석 초기상태, 그리고 요약 전이함수로 정적분석의 매개변수를 분류 했다. 정적분석의 매개변수 값을 설정하기 위해서 많은 프로그램 속성들을 사용했는데, 프로그램 코드에서 나타나는 구문적 속성과 프로그램 실행 상태에서 나타나는 의미론적 속성으로 분류했다. 이 연구조사를 통 하여, 분석이 부정확해지는 원인이 루프일때 기존의 해결책인 루프 민감 분석을 하는것보다 확장성이 높은 부분적루프민감분석방법을제안했다. 부분적인루프민감분석은루프에대한프로그램분석을할때, 정확한 분석이 필요한 실행만은 루프 민감 분석을 하고 나머지 실행에 대해서는 루프 둔감분석을 함으로써, 모든루프실행을정확하게분석하는루프민감분석보다확장성이높다. 부분적루프민감분석을하기 위해 루프 민감 분석이 필요한 변수와 그 변수의 값을 입력으로 받아 해당 변수 상태의 루프 실행은 루프 민감 분석을 하고 나머지 실행은 루프 둔감한 분석을 한다.실험을 통하여, 정적 분석이 부정확해지는 원인을 제안한 방법이 찾는지 검증했다. 정적 분석이 부정 확해지는 원인을 찾을 때 사용한 패턴별로 정적 분석 부품을 교체 하도록 프레임워크를 확장했으며, 17개 자바스크립트 프로그램에서 나타나는 분석이 부정확해지는 원인 중 96% (144/150) 를 자동으로 찾아낼 수 있었고, 가장 정확한 정적 분석을 하는 SAFELSA 에서 분석하지 못했던 5개의 프로그램을 더 분석했다. 부분적루프민감분석을적용했을때에는항상루프민감분석을하는SAFELSA 보다5%분석시간이 감소했으며, 기본 블록의 분석 횟수를 보았을 때에는 19 % 감소했다. 반면, 정확도는 프로퍼티 접근할 때, 두개 이상의 객체에 대해서 프로퍼티를 접근하는 경우가 0.56 % 증가했으며, 프로퍼티 이름이 두개 이상인 비율은 29.34 % 증가했다. 이를통해, 부분적 루프 민감 분석이 정확도면에서는 손해보지만 확장성을 높이는 분석을 할 수 있음을 보였다.

서지기타정보

서지기타정보
청구기호 {DCS 20034
형태사항 iv, 75 p. : 삽도 ; 30 cm
언어 영어
일반주기 저자명의 한글표기 : 이홍기
지도교수의 영문표기 : Sukyoung Ryu
지도교수의 한글표기 : 류석영
수록잡지명 : "Automatically Tracing Imprecision Causes in JavaScript Static Analysis". The Art, Science, and Engineering of Programming, Volume 4, Issue2, Article 2, (2020)
Including appendix
학위논문 학위논문(박사) - 한국과학기술원 : 전산학부,
서지주기 References : p. 67-74
주제 Abstract interpretation
Static analysis
Parameterization
JavaScript
Analysis precision improvement
Parametric static analysis
Analysis techniques
Partial loop sensitivity
요약해석
정적분석
매개변수화
자바스크립트
분석정확도향상
정적분석의 매개변수화
분석기술
부분적 루프 민감분석
QR CODE

책소개

전체보기

목차

전체보기

이 주제의 인기대출도서