KR20160064924A - False alarm reducing method in finding potential bug in a source code, computer program for the same, recording medium storing computer program for the same - Google Patents
False alarm reducing method in finding potential bug in a source code, computer program for the same, recording medium storing computer program for the same Download PDFInfo
- Publication number
- KR20160064924A KR20160064924A KR1020150011094A KR20150011094A KR20160064924A KR 20160064924 A KR20160064924 A KR 20160064924A KR 1020150011094 A KR1020150011094 A KR 1020150011094A KR 20150011094 A KR20150011094 A KR 20150011094A KR 20160064924 A KR20160064924 A KR 20160064924A
- Authority
- KR
- South Korea
- Prior art keywords
- alarm
- error detection
- source code
- information
- false alarm
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3624—Software debugging by performing operations on the source code, e.g. via a compiler
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
Description
본 발명은 소스 코드의 오류 검출에 있어서 오경보 저감 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체에 관한 것으로서, 정적분석기를 이용한 소스 코드의 오류 검출에 있어서 분석 대상 소스 코드에 오류가 존재하지 않음에도 불구하고 오류가 존재하는 것으로 잘못 판단하는 오경보를 저감시켜, 오경보의 검토 및 처리에 소요되는 리소스의 낭비를 방지할 수 있도록 하는 소스 코드의 오류 검출에 있어서 오경보 저감 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체에 관한 것이다.
The present invention relates to a false alarm reduction method for error detection of a source code, a computer program for the same, and a recording medium therefor. In the error detection of a source code using a static analyzer, A false alarm reduction method in error detection of a source code that reduces false alarms that are erroneously determined that an error exists, and that can prevent waste of resources required for review and processing of false alarms, a computer program for the same, .
소스 코드에 존재하는 잠재적인 오류(bug)나 취약점을 발견하기 위해 정적분석기가 널리 사용된다. 정적분석기는 각 기능별 체커의 실행에 의해 각 체커별로 미리 정의된 오류를 검출하고, 오류가 검출된 것으로 판단하면 이에 대한 경보(alarm) 메시지를 발생한다. Static analyzers are widely used to detect potential bugs or vulnerabilities in source code. The static analyzer detects a predefined error for each checker by execution of each function checker, and generates an alarm message when it is determined that an error has been detected.
그러나, 이러한 정적분석기의 분석 과정에서 오류 여부의 판단이 항상 정확하게 이뤄지지 못하는 것이 현실이며, 이로 인해 분석 대상 소스 코드에 오류가 존재하지 않음에도 불구하고 오류가 존재하는 것으로 잘못 판단하여 오경보(false alarm)를 발생하는 문제가 존재하였다. However, it is a reality that it is not always accurately judged whether or not an error is detected in the analysis process of the static analyzer. Therefore, even if there is no error in the source code to be analyzed, And the like.
일반적으로 소스 코드의 오류 검출 경보가 발생되면, 오류를 검토 및 처리하기 위해 다양한 리소스가 투입되어야 하므로, 이러한 오경보는 프로그램 개발 및 검수 과정에서 다양한 리소스의 낭비 요인이 되었다.
Generally, when an error detection alarm of a source code is generated, various resources have to be input in order to examine and process the error, and this false alarm has become a factor of wasting various resources in the program development and inspection process.
본 발명은 상기와 같은 종래의 문제점을 감안하여 안출한 것으로서, 정적분석기를 이용한 소스 코드의 오류 검출에 있어서 분석 대상 소스 코드에 오류가 존재하지 않음에도 불구하고 오류가 존재하는 것으로 잘못 판단하는 오경보(false alarm)를 저감시켜, 오경보의 검토 및 처리에 소요되는 리소스의 낭비를 방지할 수 있도록 하는 소스 코드의 오류 검출에 있어서 오경보 저감 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체를 제공하는 것을 그 목적으로 한다.
The present invention has been made in view of the above problems, and it is an object of the present invention to provide a static analyzer capable of detecting errors in a source code even if there is no error in the source code to be analyzed, a false alarm is reduced, and a waste of resources required for the examination and processing of false alarms can be prevented, and a computer program for the false alarm reduction method in the error detection of the source code, and a recording medium therefor do.
상기와 같은 목적을 달성하기 위한 본 발명의 일측면에 따르면, 정적분석기와 연동하는 오경보 저감 장치에서 실행되며, 정적분석기에서 발생하는 오류 검출 경보 중 오경보를 저감시키기 위한 방법으로서, 1) 발생한 오류 검출 경보에 관한 경보 타입(alarm types) 정보, 경보 경로(alarm path) 정보 및 경보의 대상이 된 소스 코드 정보를 입력받는 단계- 상기 경보 타입 정보는 발생한 오류 검출 경보가 미리 설정된 경보 타입 중에서 어느 타입에 해당하는지에 관한 정보이며, 상기 경보 경로 정보는 소스 코드의 실행 경로 중에서 상기 발생한 오류 검출 경보와 관련된 실행 경로에 관한 정보임-; 2) 상기 소스 코드를 추상 구문 트리(abstract syntax tree, AST)로 변환하는 단계; 3) 상기 추상 구문 트리에서 상기 오류 검출 경보와 관련되지 않은 불요(不要) 서브트리를 제거하는 단계; 4) 상기 오류 검출 경보의 경보 타입에 대하여 미리 설정된 피쳐 패턴 세트에 근거하여, 불요(不要) 서브트리가 제거된 상기 추상 구문 트리에 대한 피쳐 벡터를 수득하는 단계; 및 5) 수득된 상기 피쳐 벡터를 오경보 분류 정보가 미리 학습된 분류기에 입력하여 오경보를 분류하는 단계;를 포함하여 구성된 소스 코드의 오류 검출에 있어서 오경보 저감 방법이 개시된다. According to an aspect of the present invention, there is provided a method for reducing a false alarm among an error detection alarm that is executed in a false alarm reduction apparatus interlocked with a static analyzer, Receiving alarm code information, alarm path information, and source code information to be alerted, wherein the alarm type information includes at least one of an alarm type, Wherein the alert path information is information on an execution path associated with the generated error detection alert among the execution paths of the source code; 2) transforming the source code into an abstract syntax tree (AST); 3) removing from the abstract syntax tree an unnecessary subtree that is not associated with the error detection alert; 4) obtaining a feature vector for the abstract syntax tree from which an unnecessary subtree has been removed, based on a set of feature patterns preset for the alert type of the error detection alert; And 5) inputting the feature vector to the classifier in which the false alarm classification information has been learned in advance to classify the false alarm. The false alarm reduction method in the error detection of the source code is disclosed.
바람직하게, 본 발명은, 6) 상기 5) 단계에서 오경보로 분류된 오류 검출 경보를, 해당 경보 타입에 있어서의 정적분석기의 오류 검출 경보 대상에서 삭제하는 단계;를 더욱 포함하여 구성된 것을 특징으로 한다. Preferably, the present invention further comprises: (6) deleting an error detection alarm classified as a false alarm in the step 5) at an error detection alert target of the static analyzer in the alarm type .
바람직하게, 상기 3) 단계에서, 상기 불요(不要) 서브트리의 제거는, 오류 검출 경보와 관련된 실행 경로 상에서 실행된 구문을 제외한 다른 일반 구문을 제거하는 제1 정책과, 오류 검출 경보와 관련된 실행 경로 상에서 실행된 분기문이 아닌 다른 분기문을 제거하는 제2 정책과- 단, 오류 검출 경보와 관련된 실행 경로는 분기문의 조건 판별 결과를 포함함-, 오류 검출 경보와 관련된 실행 경로 상에서 실행된 반복문이 아닌 다른 반복문을 제거하는 제3 정책과, 오류 검출 경보와 관련된 실행 경로 상에서 호출된 함수 및 상기 함수의 실행 경로를 상기 함수를 호출하는 노드의 서브트리로 포함하는 제4 정책과, 오류 검출 경보와 관련된 실행 경로와 관계 없는 선언문을 제거하는 제5 정책 중의 적어도 어느 하나의 정책에 근거하여 이뤄지는 것을 특징으로 한다. Preferably, in the step 3), the removal of the unnecessary subtree may include a first policy to remove other general syntaxes other than the syntax executed on the execution path associated with the error detection alarm, and an execution related to the error detection alarm A second policy for removing branch statements other than the branch statements executed on the path, provided that the execution path associated with the error detection alert includes the result of the branch statement condition determination, a loop executed on the execution path associated with the error detection alert, A fourth policy that includes a function called on the execution path related to the error detection alarm and a execution path of the function as a subtree of the node calling the function, And a fifth policy for removing a declaration not related to the execution path associated with the execution path. do.
바람직하게, 상기 4) 단계에서, 상기 피쳐 패턴 세트는, 상기 오류 검출 경보의 특정 경보 타입에 대하여 미리 설정된 n 개의 피쳐 패턴의 세트 형태로 구성되며, 상기 피처 패턴은, 조건문 발생, 루프문 발생, 리턴문 발생, 브레이크(break) 또는 컨티뉴(continue)문 발생, 엑시트(exit) 또는 어서트(assert) 메소드 호출(method invocation) 발생, 널 표현(null expression) 발생, 널 값과의 비교(comparisons with a null value) 발생, 널 할당(null assignments) 발생, 널 값을 리턴하는 문(statements)의 발생 중의 어느 하나인 것을 특징으로 한다. Preferably, in the step 4), the feature pattern set is configured in the form of a set of n feature patterns preset for a specific alarm type of the error detection alarm, and the feature pattern includes at least one of a condition statement occurrence, Return statement occurrence, break or continuation statement occurrence, exit or assert method invocation occurrence, null expression occurrence, comparisons with null value a null value, null assignments, or statements that return a null value.
바람직하게, 상기 4) 단계에서, 상기 불요(不要) 서브트리가 제거된 상기 추상 구문 트리에 대한 피쳐 벡터(Vj(R))의 수득 과정은, 401) 상기 오류 검출 경보의 경보 타입(j)에 대하여, 하기 수학식1과 같이, n 개의 피쳐 패턴(p)의 세트 형태로 구성된 피쳐 패턴 세트(P)를 정의하는 단계; Preferably, in the step 4), the process of obtaining the feature vector Vj (R) for the abstract syntax tree from which the unnecessary subtree has been removed may include: 401) obtaining the alert type j ) Defining a feature pattern set (P) composed of a set of n feature patterns (p) as shown in the following equation (1);
[수학식1][Equation 1]
P = {p1, p2, ..., pn}P = {p 1 , p 2 , ..., p n }
402) 하기 수학식2와 같이, 추상 구문 트리 상의 임의의 노드 d에 대한 n 차원의 패턴 만족 벡터(v(P,d))를 정의하는 단계; 402) defining an n-dimensional pattern satisfaction vector v (P, d) for an arbitrary node d on an abstract syntax tree, as shown in the following equation (2);
[수학식2]&Quot; (2) "
(단, S(d,pi)는 임의의 노드 d 또는 노드 d를 루트로 하는 서브트리가 i 번째 피쳐 패턴(pi)에 매칭되는지 여부를 나타내는 인자로서, 하기 수학식3과 같이 정의되며, i 번째 피쳐 패턴(pi)은 단일 노드 또는 서브트리일 수 있음Where S (d, p i ) is a factor indicating whether or not a subtree rooted at an arbitrary node d or node d matches the i-th feature pattern (p i ) is defined as Equation 3 below , the ith feature pattern (p i ) can be a single node or subtree
[수학식3]&Quot; (3) "
) )
403) 하기 수학식4와 같이, 추상 구문 트리 상의 임의의 노드 D에 대한 피쳐 벡터(V(P,D))를 정의하는 단계; 및 403) defining a feature vector (V (P, D)) for an arbitrary node D on an abstract syntax tree, as shown in equation (4); And
[수학식4]&Quot; (4) "
(단, d1,...,dm은 임의의 노드 D의 자식 노드들이며, (Where d 1 , ..., d m are child nodes of an arbitrary node D,
V(P,d1)...V(P,dm) 는 자식 노드 d1,...,dm에 대하여 상기 수학식4를 통해 구한 피쳐 벡터이며, V (P, d 1) ... V (P, d m) is the feature vector obtained through the expression (4) with respect to the child nodes, d 1, ..., d m,
v(P,D)는 임의의 노드 D에 대한 n 차원의 패턴 만족 벡터임)v (P, D) is an n-dimensional pattern satisfaction vector for any node D)
404) 하기 수학식5를 이용하여, 상기 불요(不要) 서브트리가 제거된 상기 추상 구문 트리에 대한 피쳐 벡터(Vj(R))를 수득하는 단계;를 포함하여 구성된 것을 특징으로 한다. 404) The feature vector Vj (R) for the abstract syntax tree from which the unnecessary subtree has been removed is obtained using Equation (5).
[수학식5] &Quot; (5) "
(단, R은 상기 불요(不要) 서브트리가 제거된 상기 추상 구문 트리의 루트 노드로서 상기 수학식4의 노드 D에 대응하며, (Where R corresponds to the node D in Equation (4) as the root node of the abstract syntax tree from which the unnecessary subtree has been removed,
j는 발생한 오류 검출 경보에 관한 경보 타입을 나타내는 인자임)j is an argument indicating an alarm type related to a generated error detection alarm)
바람직하게, 상기 5) 단계의 분류기는 SVM(Support Vector Machine)이며, 오류 검출 경보에 관한 경보 타입 별로 생성되는 것을 특징으로 한다. Preferably, the classifier of step 5) is a SVM (Support Vector Machine), and is generated for each alarm type related to the error detection alarm.
본 발명의 또 다른 일측면에 따르면, 하드웨어와 결합되어 상기 소스 코드의 오류 검출에 있어서 오경보 저감 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램이 개시된다. According to another aspect of the present invention, a computer program stored in a medium for causing a false alarm reduction method to be performed in error detection of the source code in combination with hardware is disclosed.
본 발명의 또 다른 일측면에 따르면, 상기 소스 코드의 오류 검출에 있어서 오경보 저감 방법을 컴퓨터에서 실행하기 위한 컴퓨터 프로그램이 기록된, 컴퓨터로 판독 가능한 기록 매체가 개시된다.
According to another aspect of the present invention, a computer readable recording medium on which a computer program for executing a false alarm reduction method in a computer in error detection of the source code is recorded.
이와 같은 본 발명에 따르면, 정적분석기를 이용한 소스 코드의 오류 검출에 있어서 분석 대상 소스 코드에 오류가 존재하지 않음에도 불구하고 오류가 존재하는 것으로 잘못 판단하는 오경보(false alarm)를 저감시킬 수 있으며, 이에 따라 오경보의 검토 및 처리에 소요되는 리소스의 낭비를 방지할 수 있다는 장점이 있다. According to the present invention, in the error detection of the source code using the static analyzer, it is possible to reduce a false alarm that erroneously determines that an error exists even though there is no error in the source code to be analyzed, Accordingly, there is an advantage that waste of resources required for review and processing of false alarms can be prevented.
특히, 본 발명은, 오류 경보가 발생된 소스 코드의 구조적 특징을 이용하여 오경보 여부를 분류하므로, 오경보 분류의 정확도를 향상시킬 수 있다는 장점이 있다.
Particularly, the present invention classifies the false alarm by using the structural feature of the source code in which the false alarm is generated, so that the accuracy of the false alarm classification can be improved.
도 1은 본 발명의 일실시예에 따른 소스 코드의 오류 검출에 있어서 오경보 저감 방법을 설명하기 위한 개념도이다. 1 is a conceptual diagram for explaining a false alarm reduction method in error detection of a source code according to an embodiment of the present invention.
본 발명은 그 기술적 사상 또는 주요한 특징으로부터 벗어남이 없이 다른 여러가지 형태로 실시될 수 있다. 따라서, 본 발명의 실시예들은 모든 점에서 단순한 예시에 지나지 않으며 한정적으로 해석되어서는 안 된다.The present invention may be embodied in many other forms without departing from its spirit or essential characteristics. Accordingly, the embodiments of the present invention are to be considered in all respects as merely illustrative and not restrictive.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는 데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.The terms first, second, etc. may be used to describe various components, but the components should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, the first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component. And / or < / RTI > includes any combination of a plurality of related listed items or any of a plurality of related listed items.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "구비하다", "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used in this application is used only to describe a specific embodiment and is not intended to limit the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In the present application, the terms "comprises", "having", "having", and the like are intended to specify the presence of stated features, integers, steps, operations, components, Steps, operations, elements, components, or combinations of elements, numbers, steps, operations, components, parts, or combinations thereof.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the contextual meaning of the related art and are to be interpreted as either ideal or overly formal in the sense of the present application Do not.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 실시예를 상세히 설명하되, 도면 부호에 관계없이 동일하거나 대응하는 구성 요소는 동일한 참조 번호를 부여하고 이에 대한 중복되는 설명은 생략하기로 한다. 본 발명을 설명함에 있어서 관련된 공지 기술에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우 그 상세한 설명을 생략한다.
Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings, wherein like or corresponding elements are denoted by the same reference numerals, and a duplicate description thereof will be omitted. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS Hereinafter, the present invention will be described in detail with reference to the accompanying drawings.
도 1은 본 발명의 일실시예에 따른 소스 코드의 오류 검출에 있어서 오경보 저감 방법을 설명하기 위한 개념도이다. 1 is a conceptual diagram for explaining a false alarm reduction method in error detection of a source code according to an embodiment of the present invention.
본 실시예의 발명은, 정적분석기와 연동하는 오경보 저감 장치에서 실행되며, 정적분석기에서 발생하는 오류 검출 경보 중 오경보를 저감시키기 위한 방법이다. The invention of this embodiment is implemented in a false alarm reduction apparatus interlocked with a static analyzer, and is a method for reducing false alarms among error detection alarms generated in a static analyzer.
일예로, 상기 오경보 저감 장치는 오경보 저감 방법을 실행하는 컴퓨팅 수단 또는 그 기능 모듈로 이해될 수 있으며, 정적분석기에 연동 모듈 형태로 구현되거나, 내부 모듈 형태로 구현될 수 있다. For example, the false alarm reduction apparatus may be understood as a computing means or a functional module for executing the false alarm reduction method, and may be implemented in a static module in the form of an interlock module or an internal module.
본 실시예의 오경보 저감 장치는 공지의 다양한 정적분석기와 연동한다. 일예로, 정적분석기는 문법기반(Syntactic) 분석 또는 의미기반(Semantic) 분석 방식의 다양한 상용 제품들이 공지된 바 있으며, 그 상세한 설명은 생략한다.
The false alarm reduction apparatus of the present embodiment works in conjunction with various known static analyzers. For example, various commercial products of a static analyzer such as a syntax analysis or a semantic analysis method have been known, and a detailed description thereof will be omitted.
S1 단계에서, 오경보 저감 장치는, 발생한 오류 검출 경보에 관한 경보 타입(alarm type) 정보, 경보 경로(alarm path) 정보 및 경보의 대상이 된 소스 코드 정보를 입력받는다. 일예로, 상기 입력은 오경보 저감 장치의 입력 요청 또는 정적분석기의 설정에 근거하여, 오경보 저감 장치와 연동하는 정적분석기가 오경보 저감 장치로 상기 각 정보를 입력 제공하거나, 다른예로, 상기 각 정보가 기록된 파일을 사용자가 오경보 저감 장치가 독출 가능하도록 입력하는 방식으로 이뤄질 수 있다. In step S1, the false alarm reduction device receives alarm type information, alarm path information, and source code information to be alerted regarding the generated error detection alarm. For example, based on the input request of the false alarm reduction device or the setting of the static analyzer, the input may be a static analyzer linked with the false alarm reduction device to input the information to the false alarm reduction device, or as another example, And the recorded file can be input by the user so that the false alarm reduction device can read it.
상기 경보 타입 정보는 발생한 오류 검출 경보가 미리 설정된 경보 타입 중에서 어느 타입에 해당하는지에 관한 정보이며, 상기 경보 경로 정보는 소스 코드의 실행 경로 중에서 상기 발생한 오류 검출 경보와 관련된 실행 경로에 관한 정보이다. The alert type information is information on which type of alarm type generated corresponds to which type among preset alert types, and the alert path information is information related to an execution path related to the generated error detection alert among execution paths of the source code.
정적분석기는 각 기능별 체커의 실행에 의해 각 체커별로 미리 정의된 기준에 근거하여 분석 대상 소스 코드의 오류 여부를 검출하고, 오류가 검출된 것으로 판단하면 이에 대한 특정한 경보(alarm)를 발생한다. The static analyzer detects the error of the source code to be analyzed based on predefined criteria for each checker by execution of each function checker, and generates a specific alarm when it is determined that an error is detected.
이때, 상기 경보는 검출된 오류에 대하여 체커에 미리 설정된 특정 경보 메시지를 출력하는 방식으로 이뤄진다. 각 경보 메시지는 기본적으로 특정 체커에 종속되어 있으며, 일반적으로 소스 코드의 특징이나 형태, 혹은 실행 경로 상의 특징을 반영하고 있지는 않다. At this time, the alarm is configured to output a specific alarm message preset to the checker for the detected error. Each alert message is inherently dependent on a particular checker and does not generally reflect the characteristics or form of the source code or features on the execution path.
하나의 '경보 타입'은 동일한 경보 메시지를 가진다. 일예로, 하나의 체커는 하나의 경보 메시지를 발생시키며, 하나의 '경보 타입'을 정의하는 것으로 이해될 수 있다. One 'alert type' has the same alert message. For example, one checker generates one alert message and can be understood to define a single 'alert type'.
일예로, 상기 '경보 타입'은 'general null dereference', 'dereferencing of an unchecked null value' 및 'dereferencing of a returned null value' 등을 그 예로 들 수 있으며, 이외에도 다양한 경보 타입이 설정될 수 있다.For example, the 'alert type' may include 'general null dereference', 'dereferencing of an unchecked null value', and 'dereferencing of a returned null value'. In addition, various alert types may be set.
일예로, 상기 경보 타입(alarm types) 별로 후술하는 피쳐 패턴 세트가 정의된다.
For example, a set of feature patterns described below is defined for each of the alarm types.
S2 단계에서, 오경보 저감 장치는, 상기 소스 코드를 추상 구문 트리(abstract syntax tree, AST)로 변환한다. In step S2, the false alarm reduction apparatus converts the source code into an abstract syntax tree (AST).
추상 구문 트리(abstract syntax tree, AST)는 프로그래밍 언어로 작성된 소스 코드의 추상 구문 구조의 트리로서, 이 트리의 각 노드는 소스 코드에서 발생되는 구조체를 나타낸다. 추상 구문 트리의 상세한 개념은 다수의 공지 자료를 통해 이해될 수 있으므로 상세 설명은 생략한다.
An abstract syntax tree (AST) is a tree of abstract syntax structures in source code written in a programming language, where each node in the tree represents a structure that is generated from the source code. The detailed concept of the abstract syntax tree can be understood through a large number of known data, so detailed description is omitted.
S3 단계에서, 오경보 저감 장치는, 상기 추상 구문 트리에서 상기 오류 검출 경보와 관련되지 않은 불요(不要) 서브트리를 제거한다. In step S3, the false alarm reduction device removes unnecessary subtrees not related to the error detection alarm in the abstract syntax tree.
불요(不要) 서브트리의 제거는 통상의 규칙 기반 기법에 의해 이뤄질 수 있다. Removal of unnecessary subtrees may be accomplished by conventional rule-based techniques.
일예로, 상기 불요(不要) 서브트리의 제거는, 오류 검출 경보와 관련된 실행 경로 상에서 실행된 구문을 제외한 다른 일반 구문을 제거하는 제1 정책과, 오류 검출 경보와 관련된 실행 경로 상에서 실행된 분기문이 아닌 다른 분기문을 제거하는 제2 정책과- 단, 오류 검출 경보와 관련된 실행 경로는 분기문의 조건 판별 결과를 포함함-, 오류 검출 경보와 관련된 실행 경로 상에서 실행된 반복문이 아닌 다른 반복문을 제거하는 제3 정책과, 오류 검출 경보와 관련된 실행 경로 상에서 호출된 함수 및 상기 함수의 실행 경로를 상기 함수를 호출하는 노드의 서브트리로 포함하는 제4 정책과, 오류 검출 경보와 관련된 실행 경로와 관계 없는 선언문을 제거하는 제5 정책 중의 적어도 어느 하나의 정책에 근거하여 이뤄진다.
For example, the removal of the unnecessary subtree may include a first policy that removes other general syntaxes other than those executed on the execution path associated with the error detection alert, and a first policy that removes the branching statements executed on the execution path associated with the error- , Except that the execution path associated with the error detection alarm includes the result of the determination of the condition of the branch statement - the removal of the loop other than the loop executed on the execution path associated with the error detection alarm A fourth policy including a function called on the execution path associated with the error detection alert and a execution path of the function as a subtree of the node calling the function, And a fifth policy for removing the missing declaration.
S4 단계에서, 오경보 저감 장치는, 상기 오류 검출 경보의 경보 타입에 대하여 미리 설정된 피쳐 패턴 세트에 근거하여, 불요(不要) 서브트리가 제거된 상기 추상 구문 트리에 대한 피쳐 벡터를 수득한다. In step S4, the false alarm reduction apparatus obtains a feature vector for the abstract syntax tree from which unnecessary subtrees have been removed, based on a set of feature patterns preset for the alarm type of the error detection alarm.
소스 코드로부터 구해진 추상 구문 트리(abstract syntax tree, AST)는 분류기를 통한 오경보 분류를 위해 그대로 입력 데이터로 활용 하기에는 너무 크고 복잡한 구조를 갖는다. 본 실시예와 같이 소스 코드로부터 구해진 추상 구문 트리에 대하여 피쳐 벡터를 수득하고 이를 이용하여 분류기 학습을 하게 되면, 학습 시간을 줄이고 성능을 향상시키는 장점을 얻게 된다. The abstract syntax tree (AST) obtained from the source code is too large and complex to be used as input data for classifying false alarms through a classifier. As in the present embodiment, when the feature vector is obtained for the abstract syntax tree obtained from the source code and the classifier learning is performed using the feature vector, the learning time is reduced and the performance is improved.
바람직하게, 상기 피쳐 패턴 세트는, 상기 오류 검출 경보의 특정 경보 타입에 대하여 미리 설정된 n 개의 피쳐 패턴의 세트 형태로 구성되며, 상기 피처 패턴은, 조건문 발생, 루프문 발생, 리턴문 발생, 브레이크(break) 또는 컨티뉴(continue)문 발생, 엑시트(exit) 또는 어서트(assert) 메소드 호출(method invocation) 발생, 널 표현(null expression) 발생, 널 값과의 비교(comparisons with a null value) 발생, 널 할당(null assignments) 발생, 널 값을 리턴하는 문(statements)의 발생 중의 어느 하나일 수 있다. 이를 표로 정리하면 다음과 같다. Advantageously, the feature pattern set is configured in the form of a set of n feature patterns preset for a particular alert type of the error detection alert, the feature pattern comprising at least one of a condition statement occurrence, a loop statement occurrence, a return statement occurrence, a break or continuation statement, exit or assert method invocation, null expression generation, comparisons with a null value generation, The occurrence of null assignments, or the occurrence of statements that return a null value. The table below summarizes the following.
바람직하게, 상기 S4 단계에서, 상기 불요(不要) 서브트리가 제거된 상기 추상 구문 트리에 대한 피쳐 벡터(Vj(R))의 수득 과정은 다음과 같이 실행된다. Preferably, in step S4, the process of obtaining the feature vector Vj (R) for the abstract syntax tree from which the unnecessary subtree has been removed is performed as follows.
S401 단계에서, 오경보 저감 장치는, 상기 오류 검출 경보의 경보 타입(j)에 대하여, 하기 수학식1과 같이, n 개의 피쳐 패턴(p)의 세트 형태로 구성된 피쳐 패턴 세트(P)를 정의한다. In step S401, the false alarm reduction device defines a feature pattern set P composed of a set of n feature patterns p as shown in the following equation (1) for the alarm type (j) of the error detection alarm .
[수학식1][Equation 1]
P = {p1, p2, ..., pn}
P = {p 1 , p 2 , ..., p n }
S402 단계에서, 오경보 저감 장치는, 하기 수학식2와 같이, 추상 구문 트리 상의 임의의 노드 d에 대한 n 차원의 패턴 만족 벡터(v(P,d))를 정의한다. In step S402, the false alarm reduction apparatus defines an n-dimensional pattern satisfaction vector v (P, d) for an arbitrary node d on the abstract syntax tree, as shown in the following equation (2).
[수학식2]&Quot; (2) "
(단, S(d,pi)는 임의의 노드 d 또는 노드 d를 루트로 하는 서브트리가 i 번째 피쳐 패턴(pi)에 매칭되는지 여부를 나타내는 인자로서, 하기 수학식3과 같이 정의되며, i 번째 피쳐 패턴(pi)은 단일 노드 또는 서브트리일 수 있음Where S (d, p i ) is a factor indicating whether or not a subtree rooted at an arbitrary node d or node d matches the i-th feature pattern (p i ) is defined as Equation 3 below , the ith feature pattern (p i ) can be a single node or subtree
[수학식3]&Quot; (3) "
)
)
S403 단계에서, 오경보 저감 장치는, 하기 수학식4와 같이, 추상 구문 트리 상의 임의의 노드 D에 대한 피쳐 벡터(V(P,D))를 정의한다. In step S403, the false alarm reduction apparatus defines a feature vector (V (P, D)) for an arbitrary node D on the abstract syntax tree, as shown in the following equation (4).
[수학식4]&Quot; (4) "
(단, d1,...,dm은 임의의 노드 D의 자식 노드들이며, (Where d 1 , ..., d m are child nodes of an arbitrary node D,
V(P,d1)...V(P,dm) 는 자식 노드 d1,...,dm에 대하여 상기 수학식4를 통해 구한 피쳐 벡터이며, V (P, d 1) ... V (P, d m) is the feature vector obtained through the expression (4) with respect to the child nodes, d 1, ..., d m,
v(P,D)는 임의의 노드 D에 대한 n 차원의 패턴 만족 벡터임)
v (P, D) is an n-dimensional pattern satisfaction vector for any node D)
S404 단계에서, 오경보 저감 장치는, 하기 수학식5를 이용하여, 상기 불요(不要) 서브트리가 제거된 상기 추상 구문 트리에 대한 피쳐 벡터(Vj(R))를 수득한다. In step S404, the false alarm reduction apparatus obtains a feature vector Vj (R) for the abstract syntax tree from which the unnecessary subtree has been removed, using the following equation (5).
[수학식5] &Quot; (5) "
(단, R은 상기 불요(不要) 서브트리가 제거된 상기 추상 구문 트리의 루트 노드로서 상기 수학식4의 노드 D에 대응하며, (Where R corresponds to the node D in Equation (4) as the root node of the abstract syntax tree from which the unnecessary subtree has been removed,
j는 발생한 오류 검출 경보에 관한 경보 타입을 나타내는 인자임)j is an argument indicating an alarm type related to a generated error detection alarm)
상기 수학식5는, 상기 수학식4의 임의의 노드 D로서, 불요(不要) 서브트리가 제거된 상기 추상 구문 트리의 루트 노드 R을 입력하여 구해지는 식으로 이해될 수도 있다.
Equation (5) can be understood as an arbitrary node D of Equation (4) by inputting the root node R of the abstract syntax tree from which the unnecessary subtree has been removed.
S5 단계에서, 오경보 저감 장치는, 수득된 상기 피쳐 벡터를 오경보 분류 정보가 미리 학습된 분류기에 입력하여 오경보를 분류한다. 이를 위해, S5 단계에서는, 상기 S404 단계에서 수득된 피쳐 벡터(Vj(R))를 오경보 분류 정보가 미리 학습된 분류기에 입력하여 오경보를 분류하게 된다. In step S5, the false alarm reduction apparatus classifies the obtained feature vector into false alarms by inputting the feature vector into the classifier in which the false alarm classification information has been learned in advance. For this purpose, in step S5, the feature vector Vj (R) obtained in step S404 is input to the classifier in which the false alarm classification information is learned in advance to classify the false alarm.
분류기의 학습은, 예를 들어, 분류기를 생성하고자 하는 특정한 경보 타입에 해당하면서, 오경보/정상 경보 여부를 알고 있는 다수의 학습용 오류 검출 경보의 피쳐 벡터를 분류기에 미리 입력하고, 상기 학습용 오류 검출 경보의 오경보/정상 경보 여부에 관한 정보와 그 피쳐 패턴에 관한 정보에 근거하여 분류기에 공지의 기계 학습 기법에 의한 학습을 하도록 하는 방식을 이뤄질 수 있다. 도 1의 S101 단계는 각 경보 타입 별로 분류기 학습이 이뤄지는 단계를 나타낸다. 일예로, 피쳐 벡터를 분류기에 미리 입력하는 것은, 오경보/정상 경보 여부를 알고 있는 소스 코드와 해당 소스 코드에 대한 경보 타입(alarm types)을 입력하는 과정을 통해 이뤄질 수 있다. The learning of the classifier may be performed by inputting in advance, for example, a feature vector of a plurality of learning error detection alerts corresponding to a specific alarm type for which a classifier is to be generated and knowing whether a false alarm / normal alarm has occurred, Based on the information about the false alarm / normal alarm and the information about the feature pattern, a method of performing learning by a machine learning technique known in the classifier. Step S101 of FIG. 1 shows a step in which classifier learning is performed for each alarm type. For example, entering the feature vector in the classifier in advance can be accomplished by inputting source codes that know whether false alarms / normal alarms and alarm types for the source codes.
바람직하게, 상기 분류기는 SVM(Support Vector Machine) 분류기이며, 오류 검출 경보에 관한 경보 타입 별로 SVM 분류기가 생성된다. 비선형적 피쳐 벡터를 분류하기 위해 커널 함수를 이용한 맵핑 변환 과정이 포함될 수도 있다. Preferably, the classifier is a SVM (Support Vector Machine) classifier, and an SVM classifier is generated for each alarm type related to the error detection alarm. A mapping transformation process using a kernel function may be included to classify nonlinear feature vectors.
일예로, 본 실시예에 의한 SVM(Support Vector Machine) 분류기는 다음과 같이 구성될 수 있다. k 개의 경보 타입에 대응하여, k 개의 분류기 모델 M1, M2, ..., Mk 를 생성할 수 있다. For example, the SVM (Support Vector Machine) classifier according to the present embodiment may be configured as follows. In accordance with k alarm types, k classifier models M 1 , M 2 , ..., M k can be generated.
SVM 분류기는 입력 공간 X로부터 제공되는 i번째 타입의 입력 데이터 Vi(Ri1), ...,Vi(Rin) 를 고차원 피쳐 공간 F로 맵핑하고, 다음과 같은 과정을 통해 최대 마진(margin) 초평면을 구한다. The SVM classifier maps the input data V i (R i1 ), ..., V i (R in ) of the i-th type provided from the input space X to the high dimensional feature space F and calculates the maximum margin margin) Find the hyperplane.
[수학식6] &Quot; (6) "
[수학식7]&Quot; (7) "
(단, b 및 ai 는 초평면을 결정하기 위한 파라메터이며, (Where b and ai are parameters for determining the hyperplane,
yj 는 j번째 학습 데이터 Vi(Rij)의 라벨이고 '1'(참) 또는 '-1'(거짓) 중의 어느 하나의 값을 가지며, y j is a label of the jth learning data V i (R ij ) and has a value of either '1' (true) or '-1' (false)
K 는 비선형 맵핑을 단순화하기 위한 커널 함수이며, K is a kernel function for simplifying nonlinear mapping,
는 맵핑 함수임) Is a mapping function)
상기 수학식7은 i번째 타입의 모델 Mi에 대응하는 최적 초평면을 나타낸다. Equation (7) represents the optimal hyperplane corresponding to the model i M i of the second type.
이러한 분류기 구성을 통해, 타입 j의 새로운 경보가 입력되는 경우, 모델 Mj 가 사용되게 된다.With this classifier configuration, when a new alert of type j is input, the model M j is used.
일예로, 경보를 분류하기 위한 모델의 학습은 LIBSVM를 포함하는 공지 기술이 적용될 수 있다. LIBSVM의 구성은 "LIBSVM: A Library for Support Vector Machines,"(ACM Transactions on Intelligent Systems and Technology, vol. 2, no. 3, pp. 1-39, 2011., C. Chang and C. Lin) 등을 통해 참조될 수 있다. For example, a known technique including the LIBSVM can be applied to learning of a model for classifying an alarm. The configuration of LIBSVM is described in "LIBSVM: A Library for Supported Vector Machines," ACM Transactions on Intelligent Systems and Technology, Vol. 2, No. 3, pp. 1-39, Lt; / RTI >
분류기에 의한 분류 결과는, 예를 들어, SVM 분류기의 분류 결과, 오경보가 아닌 정상 경보로 분류된 경우에는 '1'의 값을 가지며, 오경보로 분류된 경우에는 '-1'의 값을 갖는 라벨을 출력하는 방식으로 이뤄질 수 있다. The result of classification by the classifier is, for example, a value of '1' when classified as a normal alarm, not a false alarm, as a classification result of the SVM classifier, and a label having a value of '-1' As shown in FIG.
한편, 다른예로서, SVM 분류기 이외의 다른 방식으로 구현되는 공지의 기계 학습 방식의 분류기가 사용될 수도 있음은 물론이다.
On the other hand, as another example, it is needless to say that a classifier of a known machine learning method implemented in a manner other than the SVM classifier may be used.
S6 단계에서, 오경보 저감 장치는, 상기 S5 단계에서 오경보로 분류된 오류 검출 경보를, 해당 경보 타입에 있어서의 정적분석기의 오류 검출 경보 대상에서 삭제한다. 바람직하게, 이러한 삭제 처리는 오경보 저감 장치에 미리 설정된 기준에 근거하여 자동으로 이뤄질 수 있으며, 다른 예로, 오경보로 분류된 오류 검출 경보를 사용자가 확인할 수 있도록 하고 삭제 명령을 입력받는 방식도 가능하다. In step S6, the false alarm reduction device deletes the error detection alarm classified as the false alarm in step S5 at the error detection alarm target of the static analyzer in the alarm type. Preferably, the deletion process may be automatically performed based on criteria set in advance in the false alarm reduction device. Alternatively, a method may be employed in which the user can confirm the error detection alarm classified as false alarms and receive the deletion command.
이를 통해, 상기 삭제 이후의 정적분석기의 소스 코드 분석 과정에서 오경보로 분류된 오류 검출 경보가 발생되는 것이 방지될 수 있으며, 결과적으로 오경보가 저감될 수 있다. Accordingly, it is possible to prevent an error detection alarm classified as a false alarm from being generated in the source code analysis process of the static analyzer after the deletion, and as a result, false alarms can be reduced.
상기와 같은 최종 삭제 처리 과정에서 있어서, 상기 분류 결과값과 함께 해당 결과값에 대한 개연성(probability) 정보값을 더욱 제공하도록 구성될 수 있으며, 상기 개연성 정보값에 스레쉬홀드(θ)를 설정할 수 있도록 하여, 최종 삭제 분류 결과에 더욱 타당성을 부여할 수 있다. In the final deletion process, the classification result value may be further provided with a probability information value for the result value, and the threshold value (?) May be set to the probability information value So that the final deletion classification result can be more validated.
예를 들어, 특정 오류 검출 경보가 오경보로 분류된 경우, 분류 결과값과 함께 제공된 개연성 정보값이 미리 설정된 스레쉬홀드보다 높은 경우에만 실제 오경보로 판단하여 삭제 처리되도록 구성될 수 있다. For example, when a specific error detection alarm is classified as a false alarm, only when the probability information value provided with the classification result value is higher than a predetermined threshold, it can be determined to be an actual false alarm and deleted.
스레쉬홀드를 높이면, 오경보 분류의 정확도는 더욱 높아지지만 오경보임에도 불구하고 오경보로 분류되지 않는 경우가 증가될 수 있으며, 스레쉬홀드를 낮추면, 정상 경보가 오경보로 분류될 확률이 높아지게 되므로, 오류 검출 경보의 건 수, 정확도에 대한 트레이드 오프 고려 등 여러가지 상황을 고려하여 적절하게 스레쉬홀드가 설정되는 것이 바람직하다. If the threshold is increased, the accuracy of the false alarm classification becomes higher. However, the case where the false alarm is not classified as false alarm may be increased, and if the threshold is lowered, the probability that the normal alarm is classified as false alarm becomes higher, It is preferable that the threshold is appropriately set in consideration of various situations such as the number of alarms and the trade-off considering accuracy.
개연성(probability) 정보값의 제공은 "Probability Estimates for Multi-class Classification by Pairwise Coupling,"(The Journal of Machine Learning Research, vol. 5, pp. 975-1005, 2004., T. Wu et al.)를 포함하는 공지 기술을 통해 이뤄질 수 있다.
Provision of probabilistic information values is described in "Probability Estimates for Multi-class Classification by Pairwise Coupling," (The Journal of Machine Learning Research, vol. 5, pp. 975-1005, 2004., T. Wu et al. , ≪ / RTI >
본 출원인에 의해 제안된 상용 정적분석기(SPARROW)로부터 발생되는 경보를 대상으로 본 실시예에 의한 오경보 저감 방법을 실험하였다. 실험 대상의 경보는 10개의 자바 오픈 소스 코드로부터 제공되었다. 각 소스 코드는 213~3,398 개의 파일과, 15,037~292,967 개의 라인으로 구성된 것들이 사용되었다. 이들 소스 코드로부터 총 265개의 경보가 얻어졌다. A false alarm reduction method according to the present embodiment was tested on alerts generated from a commercial static analyzer (SPARROW) proposed by the present applicant. The alerts were provided from ten Java open source code. In each source code, 213 ~ 3,398 files and 15,037 ~ 292,967 lines were used. A total of 265 alerts were obtained from these source codes.
실험에는 'general null dereference', 'dereferencing of an unchecked null value' 및 'dereferencing of a returned null value' 의 3가지 '경보 타입'을 사용하였다. We used three types of alarms: 'general null dereference', 'dereferencing of an unchecked null value', and 'dereferencing of a returned null value'.
피쳐 패턴으로서 상기 표 1에 예시된 피쳐 패턴들이 사용되었다. The feature patterns illustrated in Table 1 above were used as feature patterns.
실험 결과, 본 실시예의 오경보 저감 방법에 의해, 50%의 스레쉬홀드에서 37.33% 의 오경보가 발견 및 제거될 수 있었다.
As a result of the test, false alarms of 37.33% at the threshold of 50% could be found and removed by the false alarm reduction method of the present embodiment.
본 발명의 실시예 들은 다양한 컴퓨터로 구현되는 동작을 수행하기 위한 프로그램과 이를 기록한 컴퓨터 판독가능 매체를 포함한다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체는 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM, DVD, USB 드라이브와 같은 광기록 매체, 플롭티컬 디스크와 같은 자기-광 매체, 및 롬, 램, 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 상기 매체는 프로그램 명령, 데이터 구조 등을 지정하는 신호를 전송하는 반송파를 포함하는 광 또는 금속선, 도파관 등의 전송 매체일 수도 있다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다.
Embodiments of the present invention include a computer readable medium having recorded thereon a program for performing various computer-implemented operations. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The media may be those specially designed and constructed for the present invention or may be those known to those skilled in the computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks and magnetic tape, optical recording media such as CD-ROMs, DVDs, USB drives, self-optical media such as floppy disks, And a hardware device specifically configured to store and execute program instructions such as flash memory and the like. The medium may be a transmission medium such as an optical or metal line, a wave guide, or the like, including a carrier wave for transmitting a signal designating a program command, a data structure, or the like. Examples of program instructions include machine language code such as those produced by a compiler, as well as high-level language code that can be executed by a computer using an interpreter or the like.
S1,S2,S3,S4,S5,S6,S101: 오경보 저감 방법의 각 단계S1, S2, S3, S4, S5, S6, S101: Each step of the false alarm reduction method
Claims (8)
1) 발생한 오류 검출 경보에 관한 경보 타입(alarm types) 정보, 경보 경로(alarm path) 정보 및 경보의 대상이 된 소스 코드 정보를 입력받는 단계- 상기 경보 타입 정보는 발생한 오류 검출 경보가 미리 설정된 경보 타입 중에서 어느 타입에 해당하는지에 관한 정보이며, 상기 경보 경로 정보는 소스 코드의 실행 경로 중에서 상기 발생한 오류 검출 경보와 관련된 실행 경로에 관한 정보임-;
2) 상기 소스 코드를 추상 구문 트리(abstract syntax tree, AST)로 변환하는 단계;
3) 상기 추상 구문 트리에서 상기 오류 검출 경보와 관련되지 않은 불요(不要) 서브트리를 제거하는 단계;
4) 상기 오류 검출 경보의 경보 타입에 대하여 미리 설정된 피쳐 패턴 세트에 근거하여, 불요(不要) 서브트리가 제거된 상기 추상 구문 트리에 대한 피쳐 벡터를 수득하는 단계; 및
5) 수득된 상기 피쳐 벡터를 오경보 분류 정보가 미리 학습된 분류기에 입력하여 오경보를 분류하는 단계;를 포함하여 구성된 소스 코드의 오류 검출에 있어서 오경보 저감 방법.
A method for reducing false alarms among error detection alarms that are executed in a false alarm reduction device interlocked with a static analyzer,
1) receiving alarm type information, alarm path information, and source code information of an alarm for the generated error detection alarm, the alarm type information indicating that the generated error detection alarm is a preset alarm Type, and the alert path information is information related to an execution path related to the generated error detection alert among the execution paths of the source code;
2) transforming the source code into an abstract syntax tree (AST);
3) removing from the abstract syntax tree an unnecessary subtree that is not associated with the error detection alert;
4) obtaining a feature vector for the abstract syntax tree from which an unnecessary subtree has been removed, based on a set of feature patterns preset for the alert type of the error detection alert; And
And (5) inputting the feature vector into the classifier in which the false alarm classification information is learned in advance to classify the false alarm.
6) 상기 5) 단계에서 오경보로 분류된 오류 검출 경보를, 해당 경보 타입에 있어서의 정적분석기의 오류 검출 경보 대상에서 삭제하는 단계;를 더욱 포함하여 구성된 것을 특징으로 하는 소스 코드의 오류 검출에 있어서 오경보 저감 방법.
The method according to claim 1,
And 6) deleting an error detection alarm classified as a false alarm in the step 5) at the error detection alarm target of the static analyzer in the alarm type, in the error detection of the source code Method of reducing false alarms.
상기 3) 단계에서, 상기 불요(不要) 서브트리의 제거는,
오류 검출 경보와 관련된 실행 경로 상에서 실행된 구문을 제외한 다른 일반 구문을 제거하는 제1 정책과,
오류 검출 경보와 관련된 실행 경로 상에서 실행된 분기문이 아닌 다른 분기문을 제거하는 제2 정책과- 단, 오류 검출 경보와 관련된 실행 경로는 분기문의 조건 판별 결과를 포함함-,
오류 검출 경보와 관련된 실행 경로 상에서 실행된 반복문이 아닌 다른 반복문을 제거하는 제3 정책과,
오류 검출 경보와 관련된 실행 경로 상에서 호출된 함수 및 상기 함수의 실행 경로를 상기 함수를 호출하는 노드의 서브트리로 포함하는 제4 정책과,
오류 검출 경보와 관련된 실행 경로와 관계 없는 선언문을 제거하는 제5 정책 중의 적어도 어느 하나의 정책에 근거하여 이뤄지는 것을 특징으로 하는 소스 코드의 오류 검출에 있어서 오경보 저감 방법.
The method according to claim 1,
In the step 3), the removal of the unnecessary subtree may include:
A first policy for removing other general statements except for statements executed on an execution path associated with an error detection alert,
A second policy for removing branch statements other than branch statements executed on the execution path associated with the error detection alarm, and wherein the execution path associated with the error detection alert includes the result of the branch statement condition determination,
A third policy for removing an iterative statement other than an iterative statement executed on the execution path associated with the error detection alert,
A fourth policy including a function called on an execution path associated with an error detection alert and an execution path of the function as a subtree of a node calling the function,
And a fifth policy for removing a declaration that is not related to an execution path related to the error detection alarm.
상기 4) 단계에서, 상기 피쳐 패턴 세트는,
상기 오류 검출 경보의 특정 경보 타입에 대하여 미리 설정된 n 개의 피쳐 패턴의 세트 형태로 구성되며,
상기 피처 패턴은, 조건문 발생, 루프문 발생, 리턴문 발생, 브레이크(break) 또는 컨티뉴(continue)문 발생, 엑시트(exit) 또는 어서트(assert) 메소드 호출(method invocation) 발생, 널 표현(null expression) 발생, 널 값과의 비교(comparisons with a null value) 발생, 널 할당(null assignments) 발생, 널 값을 리턴하는 문(statements)의 발생 중의 어느 하나인 것을 특징으로 하는 소스 코드의 오류 검출에 있어서 오경보 저감 방법.
The method according to claim 1,
In the step (4), the feature pattern set includes
A set of n feature patterns set in advance for a specific alarm type of the error detection alarm,
The feature pattern may include at least one of a condition statement occurrence, a loop statement occurrence, a return statement occurrence, a break or continue statement occurrence, an exit or an assert method call occurrence, an occurrence of an expression, an occurrence of comparisons with a null value, a generation of null assignments, and a generation of statements returning a null value. A method for reducing false alarms in.
상기 4) 단계에서, 상기 불요(不要) 서브트리가 제거된 상기 추상 구문 트리에 대한 피쳐 벡터(Vj(R))의 수득 과정은,
401) 상기 오류 검출 경보의 경보 타입(j)에 대하여, 하기 수학식1과 같이, n 개의 피쳐 패턴(p)의 세트 형태로 구성된 피쳐 패턴 세트(P)를 정의하는 단계;
[수학식1]
P = {p1, p2, ..., pn}
402) 하기 수학식2와 같이, 추상 구문 트리 상의 임의의 노드 d에 대한 n 차원의 패턴 만족 벡터(v(P,d))를 정의하는 단계;
[수학식2]
(단, S(d,pi)는 임의의 노드 d 또는 노드 d를 루트로 하는 서브트리가 i 번째 피쳐 패턴(pi)에 매칭되는지 여부를 나타내는 인자로서, 하기 수학식3과 같이 정의되며, i 번째 피쳐 패턴(pi)은 단일 노드 또는 서브트리일 수 있음
[수학식3]
)
403) 하기 수학식4와 같이, 추상 구문 트리 상의 임의의 노드 D에 대한 피쳐 벡터(V(P,D))를 정의하는 단계; 및
[수학식4]
(단, d1,...,dm은 임의의 노드 D의 자식 노드들이며,
V(P,d1)...V(P,dm) 는 자식 노드 d1,...,dm에 대하여 상기 수학식4를 통해 구한 피쳐 벡터이며,
v(P,D)는 임의의 노드 D에 대한 n 차원의 패턴 만족 벡터임)
404) 하기 수학식5를 이용하여, 상기 불요(不要) 서브트리가 제거된 상기 추상 구문 트리에 대한 피쳐 벡터(Vj(R))를 수득하는 단계;를 포함하여 구성된 것을 특징으로 하는 소스 코드의 오류 검출에 있어서 오경보 저감 방법.
[수학식5]
(단, R은 상기 불요(不要) 서브트리가 제거된 상기 추상 구문 트리의 루트 노드로서 상기 수학식4의 노드 D에 대응하며,
j는 발생한 오류 검출 경보에 관한 경보 타입을 나타내는 인자임)
The method according to claim 1,
In the step 4), the process of obtaining the feature vector Vj (R) for the abstract syntax tree from which the unnecessary subtree has been removed,
401) defining, for an alarm type (j) of the error detection alarm, a feature pattern set (P) consisting of a set of n feature patterns (p) as shown in the following equation (1);
[Equation 1]
P = {p 1 , p 2 , ..., p n }
402) defining an n-dimensional pattern satisfaction vector v (P, d) for an arbitrary node d on an abstract syntax tree, as shown in the following equation (2);
&Quot; (2) "
Where S (d, p i ) is a factor indicating whether or not a subtree rooted at an arbitrary node d or node d matches the i-th feature pattern (p i ) is defined as Equation 3 below , the ith feature pattern (p i ) can be a single node or subtree
&Quot; (3) "
)
403) defining a feature vector (V (P, D)) for an arbitrary node D on an abstract syntax tree, as shown in equation (4); And
&Quot; (4) "
(Where d 1 , ..., d m are child nodes of an arbitrary node D,
V (P, d 1) ... V (P, d m) is the feature vector obtained through the expression (4) with respect to the child nodes, d 1, ..., d m,
v (P, D) is an n-dimensional pattern satisfaction vector for any node D)
404) obtaining a feature vector (V j (R)) for the abstract syntax tree from which the unnecessary subtree has been removed using Equation (5): < EMI ID = A method for reducing false alarms in error detection of.
&Quot; (5) "
(Where R corresponds to the node D in Equation (4) as the root node of the abstract syntax tree from which the unnecessary subtree has been removed,
j is an argument indicating an alarm type related to a generated error detection alarm)
상기 5) 단계의 분류기는 SVM(Support Vector Machine)이며, 오류 검출 경보에 관한 경보 타입 별로 생성되는 것을 특징으로 하는 소스 코드의 오류 검출에 있어서 오경보 저감 방법.
The method according to claim 1,
Wherein the classifier in step 5) is an SVM (Support Vector Machine), and is generated for each alarm type related to an error detection alarm.
A computer program stored in a medium coupled to hardware for executing a false alarm reduction method in error detection of a source code according to any one of claims 1 to 6.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/KR2015/012791 WO2016085272A1 (en) | 2014-11-28 | 2015-11-26 | Method for reducing false alarms in detecting source code error, computer program therefor, recording medium thereof |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR20140168981 | 2014-11-28 | ||
KR1020140168981 | 2014-11-28 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20160064924A true KR20160064924A (en) | 2016-06-08 |
KR101694778B1 KR101694778B1 (en) | 2017-01-10 |
Family
ID=56193851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020150011094A KR101694778B1 (en) | 2014-11-28 | 2015-01-23 | False alarm reducing method in finding potential bug in a source code, computer program for the same, recording medium storing computer program for the same |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101694778B1 (en) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102546424B1 (en) * | 2018-12-11 | 2023-06-23 | 한국전자통신연구원 | Machine learning data generating apparatus, apparatus and method for analyzing errors in source code |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110078651A1 (en) * | 2009-09-28 | 2011-03-31 | Cadence Design Systems, Inc. | Method and system for test reduction and analysis |
US20120216280A1 (en) * | 2011-02-18 | 2012-08-23 | Microsoft Corporation | Detection of code-based malware |
KR20140033616A (en) | 2012-09-07 | 2014-03-19 | 삼성전자주식회사 | Apparatus and method for detecting error and determining corresponding position in source code of mixed mode application program source code thereof |
-
2015
- 2015-01-23 KR KR1020150011094A patent/KR101694778B1/en active IP Right Grant
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110078651A1 (en) * | 2009-09-28 | 2011-03-31 | Cadence Design Systems, Inc. | Method and system for test reduction and analysis |
US20120216280A1 (en) * | 2011-02-18 | 2012-08-23 | Microsoft Corporation | Detection of code-based malware |
KR20140033616A (en) | 2012-09-07 | 2014-03-19 | 삼성전자주식회사 | Apparatus and method for detecting error and determining corresponding position in source code of mixed mode application program source code thereof |
Non-Patent Citations (1)
Title |
---|
‘LIBSVM: A Library for Support Vector Machines’, Chih-Chung Chang; Chih-Jen Lin(2013)* * |
Also Published As
Publication number | Publication date |
---|---|
KR101694778B1 (en) | 2017-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR101694783B1 (en) | Alarm classification method in finding potential bug in a source code, computer program for the same, recording medium storing computer program for the same | |
US12001788B2 (en) | Systems and methods for diagnosing problems from error logs using natural language processing | |
US8412653B2 (en) | Knowledge extraction and transformation | |
US10380349B2 (en) | Security analysis using relational abstraction of data structures | |
US8762949B2 (en) | Method and apparatus for incremental analysis of one or more properties of a program | |
US8589888B2 (en) | Demand-driven analysis of pointers for software program analysis and debugging | |
US11853421B2 (en) | Method and apparatus for analyzing malicious code | |
Nguyen et al. | Filtering noise in mixed-purpose fixing commits to improve defect prediction and localization | |
CN113468525B (en) | Similar vulnerability detection method and device for binary program | |
US11775862B2 (en) | Tracking provenance in data science scripts | |
US20140310688A1 (en) | Using stack data and source code to rank program changes | |
WO2016085272A1 (en) | Method for reducing false alarms in detecting source code error, computer program therefor, recording medium thereof | |
Alomari et al. | Clone detection through srcClone: A program slicing based approach | |
CN113596043B (en) | Attack detection method, attack detection device, storage medium and electronic device | |
CN101894072B (en) | Method for detecting abnormal termination during model detection | |
KR101694778B1 (en) | False alarm reducing method in finding potential bug in a source code, computer program for the same, recording medium storing computer program for the same | |
CN117056919A (en) | Software vulnerability detection method and system based on deep learning | |
US12099822B2 (en) | Method and system for identifying static analysis alarms based on semantics of changed source code | |
CN108536576B (en) | Method and device for optimizing test scripts of application program | |
CN113392016B (en) | Protocol generation method, device, equipment and medium for processing program abnormal condition | |
US20070299705A1 (en) | Method and apparatus for observation model validation | |
Qian et al. | Semantic-based false alarm detection approach via machine learning | |
CN113742732A (en) | Code vulnerability scanning and positioning method | |
CN113946856B (en) | Large-scale dynamic sensitive data auditing method and system capable of arranging plugins | |
KR102291948B1 (en) | Apparatus and method for detecting conditional expression fault |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E902 | Notification of reason for refusal | ||
E902 | Notification of reason for refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20191217 Year of fee payment: 4 |