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 PDF

Info

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
Application number
KR1020150011094A
Other languages
Korean (ko)
Other versions
KR101694778B1 (en
Inventor
윤종원
진민식
Original Assignee
주식회사 파수닷컴
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 주식회사 파수닷컴 filed Critical 주식회사 파수닷컴
Priority to PCT/KR2015/012791 priority Critical patent/WO2016085272A1/en
Publication of KR20160064924A publication Critical patent/KR20160064924A/en
Application granted granted Critical
Publication of KR101694778B1 publication Critical patent/KR101694778B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3624Software debugging by performing operations on the source code, e.g. via a compiler

Abstract

The present invention relates to a method for reducing a false alarm in detecting an error of a source code, and a computer program and a recording medium for performing the same. According to an aspect of the present invention, there is provided to a method executed in a false alarm reducing apparatus associated with a static analyzer, for reducing a false alarm in an error detection alarm generated by the static analyzer, the method including the steps of: 1) inputting alarm type information and alarm path information on a generated error detection alarm, and source code information that is a target of an alarm-the alarm type information is information on which type of the preset alarm types the error detection information is, and the alarm path information is information on an execution path related to the generated error detection information, among the execution paths of the source code; 2) converting the source code into an abstract syntax tree (AST); 3) removing an unnecessary sub-tree that is not related to the error detection alarm from the abstract syntax tree; 4) acquiring a feature vector on the abstract syntax tree, from which the unnecessary sub-tree is removed, based on a feature pattern set that is set in advance for the alarm type of the error detection alarm; and 5) classifying a false alarm by inputting the acquired feature vector to a classifier by which false alarm classification information has been learned in advance.

Description

소스 코드의 오류 검출에 있어서 오경보 저감 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체 {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}FIELD OF THE INVENTION The present invention relates to a false alarm reduction method for detecting errors in a source code, a computer program for the same,

본 발명은 소스 코드의 오류 검출에 있어서 오경보 저감 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체에 관한 것으로서, 정적분석기를 이용한 소스 코드의 오류 검출에 있어서 분석 대상 소스 코드에 오류가 존재하지 않음에도 불구하고 오류가 존재하는 것으로 잘못 판단하는 오경보를 저감시켜, 오경보의 검토 및 처리에 소요되는 리소스의 낭비를 방지할 수 있도록 하는 소스 코드의 오류 검출에 있어서 오경보 저감 방법, 이를 위한 컴퓨터 프로그램, 그 기록매체에 관한 것이다.
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.

대한민국 공개특허 제10-2014-0033616호 (2014.03.19 공개)Korean Patent Publication No. 10-2014-0033616 (published on March 19, 2014)

본 발명은 상기와 같은 종래의 문제점을 감안하여 안출한 것으로서, 정적분석기를 이용한 소스 코드의 오류 검출에 있어서 분석 대상 소스 코드에 오류가 존재하지 않음에도 불구하고 오류가 존재하는 것으로 잘못 판단하는 오경보(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) "

Figure pat00001
Figure pat00001

(단, 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) "

Figure pat00002
)
Figure pat00002
)

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) "

Figure pat00003
Figure pat00003

(단, 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) "

Figure pat00004
Figure pat00004

(단, 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.

구분division 피처 패턴Feature pattern 1One 조건문 발생Conditional occurrence 22 루프문 발생Loop Statement Occurs 33 리턴문 발생Return door occurrence 44 브레이크(break) 또는 컨티뉴(continue)문 발생A break or continue statement occurs. 55 엑시트(exit) 또는 어서트(assert) 메소드 호출(method invocation) 발생Exit or assert method invocation. 66 널 표현(null expression) 발생A null expression occurs. 77 널 값과의 비교(comparisons with a null value) 발생Comparisons with a null value occur 88 널 할당(null assignments) 발생Null assignments occur 99 널 값을 리턴하는 문(statements)의 발생The occurrence of statements that return null values

바람직하게, 상기 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) "

Figure pat00005
Figure pat00005

(단, 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) "

Figure pat00006
)
Figure pat00006
)

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) "

Figure pat00007
Figure pat00007

(단, 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) "

Figure pat00008
Figure pat00008

(단, 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) "

Figure pat00009
Figure pat00009

[수학식7]&Quot; (7) "

Figure pat00010
Figure pat00010

(단, 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,

Figure pat00011
는 맵핑 함수임)
Figure pat00011
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.
제1항에 있어서,
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.
제1항에 있어서,
상기 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.
제1항에 있어서,
상기 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.
제1항에 있어서,
상기 4) 단계에서, 상기 불요(不要) 서브트리가 제거된 상기 추상 구문 트리에 대한 피쳐 벡터(Vj(R))의 수득 과정은,
401) 상기 오류 검출 경보의 경보 타입(j)에 대하여, 하기 수학식1과 같이, n 개의 피쳐 패턴(p)의 세트 형태로 구성된 피쳐 패턴 세트(P)를 정의하는 단계;
[수학식1]
P = {p1, p2, ..., pn}
402) 하기 수학식2와 같이, 추상 구문 트리 상의 임의의 노드 d에 대한 n 차원의 패턴 만족 벡터(v(P,d))를 정의하는 단계;
[수학식2]
Figure pat00012

(단, S(d,pi)는 임의의 노드 d 또는 노드 d를 루트로 하는 서브트리가 i 번째 피쳐 패턴(pi)에 매칭되는지 여부를 나타내는 인자로서, 하기 수학식3과 같이 정의되며, i 번째 피쳐 패턴(pi)은 단일 노드 또는 서브트리일 수 있음
[수학식3]
Figure pat00013
)
403) 하기 수학식4와 같이, 추상 구문 트리 상의 임의의 노드 D에 대한 피쳐 벡터(V(P,D))를 정의하는 단계; 및
[수학식4]
Figure pat00014

(단, d1,...,dm은 임의의 노드 D의 자식 노드들이며,
V(P,d1)...V(P,dm) 는 자식 노드 d1,...,dm에 대하여 상기 수학식4를 통해 구한 피쳐 벡터이며,
v(P,D)는 임의의 노드 D에 대한 n 차원의 패턴 만족 벡터임)
404) 하기 수학식5를 이용하여, 상기 불요(不要) 서브트리가 제거된 상기 추상 구문 트리에 대한 피쳐 벡터(Vj(R))를 수득하는 단계;를 포함하여 구성된 것을 특징으로 하는 소스 코드의 오류 검출에 있어서 오경보 저감 방법.
[수학식5]
Figure pat00015

(단, 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) "
Figure pat00012

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) "
Figure pat00013
)
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) "
Figure pat00014

(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) "
Figure pat00015

(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)
제1항에 있어서,
상기 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.
하드웨어와 결합되어 제1항 내지 제6항 중의 어느 한 항에 따른 소스 코드의 오류 검출에 있어서 오경보 저감 방법을 실행시키기 위하여 매체에 저장된 컴퓨터 프로그램.
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.
제1항 내지 제6항 중의 어느 한 항에 따른 소스 코드의 오류 검출에 있어서 오경보 저감 방법을 컴퓨터에서 실행하기 위한 컴퓨터 프로그램이 기록된, 컴퓨터로 판독 가능한 기록 매체.A computer-readable recording medium on which a computer program for executing a false alarm reduction method in error detection of a source code according to any one of claims 1 to 6 is recorded.
KR1020150011094A 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 KR101694778B1 (en)

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
KR1020140168981 2014-11-28
KR20140168981 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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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
US11568134B2 (en) Systems and methods for diagnosing problems from error logs using natural language processing
US9208057B2 (en) Efficient model checking technique for finding software defects
US8412653B2 (en) Knowledge extraction and transformation
US20180276103A1 (en) Enhancing software development using bug data
US10380349B2 (en) Security analysis using relational abstraction of data structures
JP5079019B2 (en) Information filtering system, information filtering method, and information filtering program
US8589888B2 (en) Demand-driven analysis of pointers for software program analysis and debugging
US11853421B2 (en) Method and apparatus for analyzing malicious code
KR20090009834A (en) A generic interface for deep embedding of expression trees in programming languages
US8924932B2 (en) Using stack data and source code to rank program changes
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
WO2016085272A1 (en) Method for reducing false alarms in detecting source code error, computer program therefor, recording medium thereof
US20230394369A1 (en) Tracking provenance in data science scripts
Alomari et al. Clone detection through srcClone: A program slicing based approach
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
Yerramreddy et al. An empirical assessment of machine learning approaches for triaging reports of static analysis tools
US20230129536A1 (en) Method and system for identifying static analysis alarms based on semantics of changed source code
US20070299705A1 (en) Method and apparatus for observation model validation
US11119761B2 (en) Identifying implicit dependencies between code artifacts
CN113392016A (en) Protocol generation method, device, equipment and medium for processing program abnormal condition
Qian et al. Semantic-based false alarm detection approach via machine learning
CN113596043B (en) Attack detection method, attack detection device, storage medium and electronic device
CN114756401B (en) Abnormal node detection method, device, equipment and medium based on log

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