KR101996878B1 - Method for evaluating tool for analyzing program and apparatus thereof - Google Patents

Method for evaluating tool for analyzing program and apparatus thereof Download PDF

Info

Publication number
KR101996878B1
KR101996878B1 KR1020180142242A KR20180142242A KR101996878B1 KR 101996878 B1 KR101996878 B1 KR 101996878B1 KR 1020180142242 A KR1020180142242 A KR 1020180142242A KR 20180142242 A KR20180142242 A KR 20180142242A KR 101996878 B1 KR101996878 B1 KR 101996878B1
Authority
KR
South Korea
Prior art keywords
code
test
generating
variable
static analysis
Prior art date
Application number
KR1020180142242A
Other languages
Korean (ko)
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 KR1020180142242A priority Critical patent/KR101996878B1/en
Application granted granted Critical
Publication of KR101996878B1 publication Critical patent/KR101996878B1/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/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases

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)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

The present invention provides a method for evaluating a static analysis tool and an apparatus thereof. According to one embodiment of the present invention, provided is a tool evaluation apparatus for evaluating a static analysis tool, which comprises: a memory storing one or more template codes; and a control unit generating a test code based on the template code, and generating a benchmark set including at least one of the test code, a correct answer to the test code, and an incorrect answer to the test code.

Description

정적 분석 도구를 평가하기 위한 방법 및 그 장치{METHOD FOR EVALUATING TOOL FOR ANALYZING PROGRAM AND APPARATUS THEREOF}[0001] METHOD FOR EVALUATING TOOL ANALYZING PROGRAM AND APPARATUS THEREOF [0002]

본 명세서에서 개시되는 실시예들은 정적 분석 도구를 평가하기 위한 방법 및 그 장치에 관한 것으로, 보다 상세하게는 소스코드의 약점을 검출하는 정적 분석 도구의 정확도를 향상시키기 위해 정적 분석 도구를 평가하기 위한 방법 및 장치에 관한 것이다.The embodiments disclosed herein relate to a method and apparatus for evaluating a static analysis tool, and more particularly to a method and apparatus for evaluating a static analysis tool to improve the accuracy of a static analysis tool for detecting a weakness of a source code ≪ / RTI >

소프트웨어 개발 시 소스코드는 잠재적인 실행오류와 보안약점을 가질 수 있다. 특히, 소프트웨어 개발 프로세스에 따라 설계하고 개발하여 테스트를 거치더라도 소스코드에 존재하는 오류 또는 약점을 손쉽게 도출하기 어렵다. 따라서 소스코드에 존재하는 오류 또는 약점을 보다 쉽게 찾기 위한 기법으로서 정적 분석이 제안되고 있다.In software development, source code can have potential execution errors and security weaknesses. In particular, it is difficult to easily identify errors or weak points in the source code even if they are designed and developed according to the software development process and then tested. Therefore, static analysis has been proposed as a technique for more easily finding errors or weak points existing in the source code.

정적 분석은 컴퓨터 프로그램 소스코드를 실행하지 않고 분석하여 프로그램 동작을 예측하는 기법을 말한다. 정적 분석은 소프트웨어의 보안성 및 품질 검사 도구로서 최근 많이 활용되고 있다.Static analysis refers to a technique that predicts program behavior by analyzing computer program source code without executing it. Static analysis is widely used as security and quality inspection tool of software.

이에 정적 분석 도구의 품질이 중요해지고 있으며 정적 분석 도구의 품질을 측정하기 위해 정적 분석 도구의 결과에 얼마나 미탐 및 오탐이 적은가를 측정한다. 정적 분석 도구는 실제 실행 중에 약점이 발생하는 코드의 지점을 검출할 수도 있지만, 검출 못 할 수도 있고, 반대로 실제 약점이 발생하지 않는 지점을 검출할 수도 있다. 실제 실행 중에 약점이 발생하는 코드의 지점을 검출하는 것을 '정탐', 약점이 발생하는 코드의 지점을 검출하지 못하는 것을 '미탐', 그리고 실제 약점이 발생하지 않는 지점을 약점이 발생한 것처럼 검출해내는 것을 '오탐'이라 하는데, 검출 결과에 미탐과 오탐이 적어야 좋은 정적 분석 도구라고 볼 수 있다.The quality of the static analysis tool is becoming important, and how much static and false is less in the results of the static analysis tool is measured to measure the quality of the static analysis tool. The static analysis tool may detect the point of the code where the weakness occurs during actual execution, but may not detect it or may detect the point where the actual weak point does not occur. Detecting a point of a code where a weak point occurs during actual execution is called "spying", detecting a point of a code where a weak point occurs is called a "detect", and detecting a point where a weak point does not occur is detected as a weak point This is called "false positives", and it is good statistical analysis tool to have a small number of false positives and false positives in the detection results.

이를 위해 정적 분석 도구를 평가하기 위한 '벤치마크 집합'이 제안되고 있으며 벤치마크 집합은, 약점이 검출된 예제를 수집하여 구성되거나, 시험 코드를 수작업으로 변형하여 정답/오답이 있는 코드로 작성하는 방식으로 생성되고 있다. 이와 같이 벤치마크 집합을 구성하는 종래 기술로는, 다양한 예제를 작성해내기 어려워 정적 분석 도구를 정확하게 평가하기가 어렵다는 문제점이 있다.To this end, a 'benchmark set' for evaluating static analysis tools is proposed. Benchmark sets are constructed by collecting examples where weaknesses are detected, or by manually modifying test codes and writing them with correct / incorrect code . As described above, there are problems in that it is difficult to accurately evaluate a static analysis tool because it is difficult to create various examples according to the conventional technology for constituting a benchmark set.

선행기술 문헌인 한국특허출원번호 제10-2010-0057732호에서는 다수의 프로그램 정적 분석 도구를 사용하는 환경에서 상기 다수의 정적 분석 도구들을 통합적으로 관리하는 장치 및 시스템에 관해 기재할 뿐, 상술된 문제점을 해결하고 있지 못하다.Korean Patent Application No. 10-2010-0057732, which is a prior art document, discloses an apparatus and a system for integrally managing the plurality of static analysis tools in an environment using a plurality of program static analysis tools, Is not solving the problem.

따라서 상술된 문제점을 해결하기 위한 기술이 필요하게 되었다.Therefore, a technique for solving the above-described problems is required.

한편, 전술한 배경기술은 발명자가 본 발명의 도출을 위해 보유하고 있었거나, 본 발명의 도출 과정에서 습득한 기술 정보로서, 반드시 본 발명의 출원 전에 일반 공중에게 공개된 공지기술이라 할 수는 없다.On the other hand, the background art described above is technical information acquired by the inventor for the derivation of the present invention or obtained in the derivation process of the present invention, and can not necessarily be a known technology disclosed to the general public before the application of the present invention .

본 명세서에서 개시되는 실시예들은, 정적 분석 도구를 평가하기 위한 방법 및 그 장치를 제시하는 데 목적이 있다. The embodiments disclosed herein are aimed at providing a method and apparatus for evaluating static analysis tools.

또한 본 명세서에서 개시되는 실시예들은, 정답/오답이 있는 시험 코드를 자동으로 생성할 수 있는 정적 분석 도구의 평가 방법 및 그 장치를 제시하는 데 목적이 있다. The embodiments disclosed herein also aim to provide a method and apparatus for evaluating static analysis tools that can automatically generate test codes with correct / incorrect answers.

또한 본 명세서에서 개시되는 실시예들은, 다양한 프로그래밍 언어 요소에 따라 자동으로 시험 코드를 생성할 수 있는 정적 분석 도구의 평가 방법 및 그 장치를 제시하는 데 목적이 있다. It is also an object of the presently disclosed embodiments to provide a method and apparatus for evaluating a static analysis tool capable of automatically generating test codes according to various programming language elements.

또한 본 명세서에서 개시되는 실시예들은, 시험 코드를 복수 개 자동 생성할 수 있는 정적 분석 도구의 평가 방법 및 그 장치를 제시하는 데 목적이 있다.It is also an object of the present invention to provide a method and apparatus for evaluating a static analysis tool capable of automatically generating a plurality of test codes.

상술한 기술적 과제를 달성하기 위한 기술적 수단으로서, 일 실시예에 따르면, 정적 분석 도구를 평가하기 위한 도구 평가 장치로서, 템플릿 코드를 하나 이상 저장하는 메모리, 및 템플릿 코드에 기초하여 시험 코드를 생성하고, 상기 시험 코드, 상기 시험 코드에 대한 정답 및 상기 시험 코드에 대한 오답 중 적어도 하나를 포함하는 벤치마크 집합을 생성하는 제어부를 포함한다.According to an embodiment of the present invention, there is provided a tool evaluation apparatus for evaluating a static analysis tool, comprising: a memory for storing at least one template code; and a test code generation unit for generating a test code based on the template code And a control unit for generating a benchmark set including at least one of the test code, the correct answer to the test code, and an incorrect answer to the test code.

다른 실시예에 따르면, 도구 평가 장치가 정적 분석 도구를 평가하기 위한 방법으로서, 템플릿 코드에 기초하여 시험 코드를 생성하는 단계, 및 상기 시험 코드, 상기 시험 코드에 대한 정답 및 상기 시험 코드에 대한 오답 중 적어도 하나를 포함하는 벤치마크 집합을 생성하는 단계를 포함한다.According to another embodiment, there is provided a method for evaluating a static analysis tool of a tool evaluation apparatus, comprising the steps of: generating a test code based on a template code; and generating the test code, correct answer to the test code, Generating a set of benchmarks that includes at least one of:

또 다른 실시예에 따르면, 정적 분석 도구를 평가하기 위한 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체로서 상기 도구 평가 방법은, 템플릿 코드에 기초하여 시험 코드를 생성하는 단계, 및 상기 시험 코드, 상기 시험 코드에 대한 정답 및 상기 시험 코드에 대한 오답 중 적어도 하나를 포함하는 벤치마크 집합을 생성하는 단계를 포함한다.According to yet another embodiment, there is provided a computer-readable medium having recorded thereon a program for performing a method for evaluating a static analysis tool, the method comprising: generating a test code based on a template code; Generating a set of benchmarks including at least one of a correct answer to the test code and an incorrect answer to the test code.

정적 분석 도구의 평가 장치에 의해 수행되며, 정적 분석 도구를 평가하기 위한 방법을 수행하기 위해 매체에 저장된 컴퓨터 프로그램으로서 상기 도구 평가 방법은, 템플릿 코드에 기초하여 시험 코드를 생성하는 단계, 및 상기 시험 코드, 상기 시험 코드에 대한 정답 및 상기 시험 코드에 대한 오답 중 적어도 하나를 포함하는 벤치마크 집합을 생성하는 단계를 포함한다.A computer program stored in a medium for performing a method for evaluating a static analysis tool, the method being performed by an evaluation apparatus of a static analysis tool, the method comprising: generating a test code based on a template code; Generating a set of benchmarks comprising at least one of a code, a correct answer to the test code and an incorrect answer to the test code.

전술한 과제 해결 수단 중 어느 하나에 의하면, 정적 분석 도구를 평가하기 위한 방법 및 그 장치를 제시할 수 있다. According to any one of the above-mentioned problem solving means, a method and apparatus for evaluating a static analysis tool can be presented.

또한 본 명세서에서 개시되는 실시예들은, 정답/오답이 있는 시험 코드를 자동으로 생성할 수 있는 정적 분석 도구의 평가 방법 및 그 장치를 제시할 수 있다. In addition, embodiments disclosed herein may provide a method and apparatus for evaluating static analysis tools that can automatically generate test codes with correct / incorrect answers.

또한 본 명세서에서 개시되는 실시예들은, 다양한 프로그래밍 언어 요소에 따라 자동으로 시험 코드를 생성할 수 있는 정적 분석 도구의 평가 방법 및 그 장치를 제시할 수 있다. The embodiments disclosed herein may also provide a method and apparatus for evaluating static analysis tools capable of automatically generating test codes according to various programming language elements.

또한 본 명세서에서 개시되는 실시예들은, 시험 코드를 복수 개 자동 생성할 수 있는 정적 분석 도구의 평가 방법 및 그 장치를 제시할 수 있다.In addition, the embodiments disclosed in the present specification can suggest a method and apparatus for evaluating a static analysis tool capable of automatically generating a plurality of test codes.

개시되는 실시예들에서 얻을 수 있는 효과는 이상에서 언급한 효과들로 제한되지 않으며, 언급하지 않은 또 다른 효과들은 아래의 기재로부터 개시되는 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.The effects obtained in the disclosed embodiments are not limited to the effects mentioned above, and other effects not mentioned are obvious to those skilled in the art to which the embodiments disclosed from the following description belong It can be understood.

도 1 및 도 2는 일 실시예에 따른 도구 평가 장치를 설명하기 위한 블록도이다.
도 3은 도구 평가 장치를 설명하기 위한 예시도이다.
도 4 내지 도 5는 일 실시예에 따른 도구 평가 방법을 설명하기 위한 순서도이다.
1 and 2 are block diagrams illustrating a tool evaluation apparatus according to an embodiment.
3 is an exemplary view for explaining a tool evaluating apparatus.
4 to 5 are flowcharts for explaining a tool evaluation method according to an embodiment.

아래에서는 첨부한 도면을 참조하여 다양한 실시예들을 상세히 설명한다. 아래에서 설명되는 실시예들은 여러 가지 상이한 형태로 변형되어 실시될 수도 있다. 실시예들의 특징을 보다 명확히 설명하기 위하여, 이하의 실시예들이 속하는 기술분야에서 통상의 지식을 가진 자에게 널리 알려져 있는 사항들에 관해서 자세한 설명은 생략하였다. 그리고, 도면에서 실시예들의 설명과 관계없는 부분은 생략하였으며, 명세서 전체를 통하여 유사한 부분에 대해서는 유사한 도면 부호를 붙였다.Various embodiments are described in detail below with reference to the accompanying drawings. The embodiments described below may be modified and implemented in various different forms. In order to more clearly describe the features of the embodiments, detailed descriptions of known matters to those skilled in the art are omitted. In the drawings, parts not relating to the description of the embodiments are omitted, and like parts are denoted by similar reference numerals throughout the specification.

명세서 전체에서, 어떤 구성이 다른 구성과 "연결"되어 있다고 할 때, 이는 '직접적으로 연결'되어 있는 경우뿐 아니라, '그 중간에 다른 구성을 사이에 두고 연결'되어 있는 경우도 포함한다. 또한, 어떤 구성이 어떤 구성을 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한, 그 외 다른 구성을 제외하는 것이 아니라 다른 구성들을 더 포함할 수도 있음을 의미한다.Throughout the specification, when a configuration is referred to as being "connected" to another configuration, it includes not only a case of being directly connected, but also a case of being connected with another configuration in between. In addition, when a configuration is referred to as "including ", it means that other configurations may be included, as well as other configurations, as long as there is no specially contradicted description.

이하 첨부된 도면을 참고하여 실시예들을 상세히 설명하기로 한다.Hereinafter, embodiments will be described in detail with reference to the accompanying drawings.

도 1은 일 실시예에 따른 정적 분석 도구를 평가하기 위한 도구 평가 장치를 설명하기 위한 블록도이다.1 is a block diagram illustrating a tool evaluation apparatus for evaluating a static analysis tool according to an embodiment.

도구 평가 장치(100)는 정적 분석 도구를 평가하기 위한 시험 코드를 생성할 수 있다. The tool evaluation apparatus 100 may generate a test code for evaluating a static analysis tool.

이러한 도구 평가 장치(100)는 애플리케이션이 설치된 전자단말기로 구현될 수 있거나 또는 서버-클라이언트 시스템으로 구현될 수 있으며, 상기 시스템은 유저와의 인터랙션을 위한 클라이언트가 설치된 전자단말기를 포함할 수 있다.The tool evaluation apparatus 100 may be implemented as an electronic terminal in which an application is installed, or may be implemented in a server-client system, and the system may include an electronic terminal equipped with a client for interaction with a user.

전자단말기는 네트워크(N)를 통해 원격지의 서버에 접속하거나, 타 단말 및 서버와 연결 가능한 컴퓨터나 휴대용 단말기, 텔레비전, 웨어러블 디바이스(Wearable Device) 등으로 구현될 수 있다. 여기서, 컴퓨터는 예를 들어, 웹 브라우저(WEB Browser)가 탑재된 노트북, 데스크톱(desktop), 랩톱(laptop)등을 포함하고, 휴대용 단말기는 예를 들어, 휴대성과 이동성이 보장되는 무선 통신 장치로서, PCS(Personal Communication System), PDC(Personal Digital Cellular), PHS(Personal Handyphone System), PDA(Personal Digital Assistant), GSM(Global System for Mobile communications), IMT(International Mobile Telecommunication)-2000, CDMA(Code Division Multiple Access)-2000, W-CDMA(W-Code Division Multiple Access), Wibro(Wireless Broadband Internet), 스마트폰(Smart Phone), 모바일 WiMAX(Mobile Worldwide Interoperability for Microwave Access) 등과 같은 모든 종류의 핸드헬드(Handheld) 기반의 무선 통신 장치를 포함할 수 있다. 또한, 텔레비전은 IPTV(Internet Protocol Television), 인터넷 TV(Internet Television), 지상파 TV, 케이블 TV 등을 포함할 수 있다. 나아가 웨어러블 디바이스는 예를 들어, 시계, 안경, 액세서리, 의복, 신발 등 인체에 직접 착용 가능한 타입의 정보처리장치로서, 직접 또는 다른 정보처리장치를 통해 네트워크를 경유하여 원격지의 서버에 접속하거나 타 단말과 연결될 수 있다.The electronic terminal can be implemented as a computer, a portable terminal, a television, a wearable device, or the like, which can be connected to a remote server through a network N or to be connected to other terminals and servers. Here, the computer includes, for example, a notebook computer, a desktop computer, a laptop computer, and the like, each of which is equipped with a web browser (WEB Browser), and the portable terminal may be a wireless communication device , Personal Communication System (PCS), Personal Digital Cellular (PDC), Personal Handyphone System (PHS), Personal Digital Assistant (PDA), Global System for Mobile communications (GSM), International Mobile Telecommunication (IMT) (W-CDMA), Wibro (Wireless Broadband Internet), Smart Phone, Mobile WiMAX (Mobile Worldwide Interoperability for Microwave Access) (Handheld) based wireless communication device. In addition, the television may include an Internet Protocol Television (IPTV), an Internet television (TV), a terrestrial TV, a cable TV, and the like. Further, the wearable device is an information processing device of a type that can be directly worn on a human body, for example, a watch, a glasses, an accessory, a garment, shoes, and the like. The wearable device can be connected to a remote server via a network, Lt; / RTI >

그리고 서버는 유저와의 인터랙션을 위한 클라이언트가 설치된 전자단말기와 네트워크를 통해 통신이 가능한 컴퓨팅장치로 구현될 수 있으며, 데이터를 저장할 수 있는 저장장치가 포함될 수 있거나 또는 제 3 의 서버(미도시)를 통해 데이터를 저장할 수도 있다.The server may be implemented as a computing device capable of communicating with an electronic terminal equipped with a client for interacting with a user via a network, and may include a storage device capable of storing data or a third server (not shown) Data can be stored.

이러한 도구 평가 장치(100)는 일 실시예에 따르면, 도 1에서 도시된 바와 같이, 입출력부(110), 제어부(120), 통신부(130) 및 메모리(140)를 포함할 수 있다.1, the tool evaluation apparatus 100 may include an input / output unit 110, a control unit 120, a communication unit 130, and a memory 140, as shown in FIG.

입출력부(110)는 사용자로부터 입력을 수신하기 위한 입력부와, 작업의 수행 결과 또는 도구 평가 장치(100)의 상태 등의 정보를 표시하기 위한 출력부를 포함할 수 있다. 예를 들어, 입출력부(110)는 사용자 입력을 수신하는 조작 패널(operation panel) 및 화면을 표시하는 디스플레이 패널(display panel) 등을 포함할 수 있다.The input / output unit 110 may include an input unit for receiving an input from a user, and an output unit for displaying information such as a result of a task or a state of the tool evaluation apparatus 100. For example, the input / output unit 110 may include an operation panel for receiving user input and a display panel for displaying a screen.

구체적으로, 입력부는 키보드, 물리 버튼, 터치 스크린, 카메라 또는 마이크 등과 같이 다양한 형태의 사용자 입력을 수신할 수 있는 장치들을 포함할 수 있다. 또한, 출력부는 디스플레이 패널 또는 스피커 등을 포함할 수 있다. 다만, 이에 한정되지 않고 입출력부(110)는 다양한 입출력을 지원하는 구성을 포함할 수 있다.In particular, the input unit may include devices capable of receiving various types of user input, such as a keyboard, a physical button, a touch screen, a camera or a microphone. Also, the output unit may include a display panel or a speaker. However, the present invention is not limited to this, and the input / output unit 110 may include various input / output support structures.

제어부(120)는 도구 평가 장치(100)의 전체적인 동작을 제어하며, CPU 등과 같은 프로세서를 포함할 수 있다. 제어부(120)는 입출력부(110)를 통해 수신한 사용자 입력에 대응되는 동작을 수행하도록 단말(100)에 포함된 다른 구성들을 제어할 수 있다.The control unit 120 controls the overall operation of the tool evaluation apparatus 100 and may include a processor such as a CPU. The control unit 120 may control other components included in the terminal 100 to perform an operation corresponding to the user input received through the input /

예를 들어, 제어부(120)는 메모리(140)에 저장된 프로그램을 실행시키거나, 메모리(140)에 저장된 파일을 읽어오거나, 새로운 파일을 메모리(140)에 저장할 수도 있다.For example, the control unit 120 may execute a program stored in the memory 140, read a file stored in the memory 140, or store a new file in the memory 140. [

이와 같은 제어부(120)는 코드생성부(210), 집합생성부(220) 및 품질평가부(230)를 포함하며 이는 도 2를 참조하여 후술된다.The controller 120 includes a code generator 210, an aggregator 220, and a quality estimator 230, which will be described below with reference to FIG.

통신부(130)는 다른 디바이스 또는 네트워크와 유무선 통신을 수행할 수 있다. 이를 위해, 통신부(130)는 다양한 유무선 통신 방법 중 적어도 하나를 지원하는 통신 모듈을 포함할 수 있다. 예를 들어, 통신 모듈은 칩셋(chipset)의 형태로 구현될 수 있다.The communication unit 130 can perform wired / wireless communication with another device or a network. To this end, the communication unit 130 may include a communication module supporting at least one of various wired / wireless communication methods. For example, the communication module may be implemented in the form of a chipset.

통신부(130)가 지원하는 무선 통신은, 예를 들어 Wi-Fi(Wireless Fidelity), Wi-Fi Direct, 블루투스(Bluetooth), UWB(Ultra Wide Band) 또는 NFC(Near Field Communication) 등일 수 있다. 또한, 통신부(130)가 지원하는 유선 통신은, 예를 들어 USB 또는 HDMI(High Definition Multimedia Interface) 등일 수 있다.The wireless communication supported by the communication unit 130 may be Wi-Fi (Wireless Fidelity), Wi-Fi Direct, Bluetooth, UWB (Ultra Wide Band), NFC (Near Field Communication), or the like. The wired communication supported by the communication unit 130 may be, for example, USB or High Definition Multimedia Interface (HDMI).

메모리(140)에는 파일, 어플리케이션 및 프로그램 등과 같은 다양한 종류의 데이터가 설치 및 저장될 수 있다. 제어부(120)는 메모리(140)에 저장된 데이터에 접근하여 이를 이용하거나, 또는 새로운 데이터를 메모리(140)에 저장할 수도 있다. 또한, 제어부(120)는 메모리(140)에 설치된 프로그램을 실행할 수도 있다. 도 1을 참조하면, 메모리(140)에는 도구 평가 방법을 수행하기 위한 프로그램이 설치될 수 있다.Various types of data such as files, applications, programs, and the like can be installed and stored in the memory 140. [ The control unit 120 may access the data stored in the memory 140 and use the data or store the new data in the memory 140. [ Also, the control unit 120 may execute a program installed in the memory 140. [ Referring to FIG. 1, a program for performing a tool evaluation method may be installed in the memory 140.

이와 같은 메모리(140)에는 약점 테이블, 스키마 테이블 및 코드 테이블 중 적어도 하나가 저장될 수 있다. In the memory 140, at least one of a weak point table, a schema table, and a code table may be stored.

일 실시예에 따르면, 입출력부(110)를 통해 사용자로부터 정적 분석 도구의 평가를 요청하는 입력을 수신하면, 제어부(120)는 메모리(140)에 저장된 프로그램을 실행시켜 정적 분석 도구의 평가를 수행한다. According to one embodiment, upon receiving an input requesting evaluation of a static analysis tool from a user through the input / output unit 110, the control unit 120 executes a program stored in the memory 140 to perform evaluation of the static analysis tool do.

도 2는 도 1에 도시된 제어부(120)를 도시한 블록도이다.2 is a block diagram showing the control unit 120 shown in FIG.

제어부(120)는 코드생성부(210)를 포함할 수 있다.The control unit 120 may include a code generation unit 210.

추가적으로 제어부(120)는 집합생성부(220) 및 품질평가부(230)를 더 포함할 수 있다.In addition, the control unit 120 may further include an aggregation generation unit 220 and a quality evaluation unit 230.

집합생성부(220)는 코드생성부(210)에 의해 생성된 시험 코드와, 상기 시험 코드에 대한 정답 및 상기 시험 코드에 대한 오답 중 적어도 하나를 포함하는 벤치마크 집합을 생성할 수 있다. The set generation unit 220 may generate a set of benchmarks including at least one of a test code generated by the code generation unit 210, a correct answer to the test code, and an incorrect answer to the test code.

품질평가부(230)는 벤치마크 집합에 기초하여 정적 분석 도구를 실행시키고 정적 분석 도구가 검출하는 미탐 및 오탐 중 적어도 하나를 감지한다. The quality evaluation unit 230 executes the static analysis tool based on the benchmark set and detects at least one of a hit and a false that is detected by the static analysis tool.

예를 들어 품질평가부(230)는 벤치마크 집합에 속하는 시험 코드에 대해 정적 분석 도구를 실행시키고 그 결과 검출된 정답 또는 오답에 기초하여 정적 분석 도구의 미탐 또는 오탐을 감지한다.For example, the quality evaluation unit 230 executes a static analysis tool for a test code belonging to a benchmark set, and detects a hit or a false detection of the static analysis tool based on the detected correct answer or wrong answer.

품질평가부(230)는 감지된 미탐 또는 오탐의 개수에 기초하여 정적 분석 도구의 품질을 평가할 수 있으며 평가에 따른 점수도 부여할 수 있다. 일 실시예에 따르면 품질평가부(230)는 검출 결과에 미탐과 오탐이 적을수록 좋은 정적 분석 도구라 평가할 수 있다.The quality evaluation unit 230 can evaluate the quality of the static analysis tool based on the number of detected or missed detections and can also give a score according to the evaluation. According to one embodiment, the quality evaluating unit 230 may evaluate the static analysis tool as a better static analysis tool as the detection result is smaller.

한편 코드생성부(210)는 정적 분석 도구를 적용하기 위한 시험 코드를 생성할 수 있다. Meanwhile, the code generation unit 210 may generate a test code for applying the static analysis tool.

일 실시예에 따르면 코드생성부(210)는 템플릿 코드에 기초하여 시험 코드를 생성할 수 있다.According to one embodiment, the code generation unit 210 may generate a test code based on the template code.

이때 '템플릿 코드'는 '코드 변수'를 포함하는 소스 코드를 의미하며, 후술될 스키마에 따라 결정될 수 있다. '코드 변수'는 약점을 가질 수 있는 코드를 의미한다. Here, 'template code' means source code including 'code variable', and can be determined according to a schema to be described later. 'Code variable' means code that can have weaknesses.

예를 들어, 다음의 표1에 기재된 템플릿 코드는 명령어 삽입(command injection)이라는 보안약점을 검출해내기 위한 코드로, ${...} 형태로 작성된 코드 변수를 포함한다.For example, the template code shown in Table 1 below is a code for detecting a security weakness called command injection, and includes a code variable written in the form of $ {...}.

[표 1][Table 1]

Figure 112018114614921-pat00001
Figure 112018114614921-pat00001

일 실시예에 따르면 코드생성부(210)는 템플릿 코드 내에서의 코드 변수를 탐색할 수 있으며, 탐색된 코드 변수를 대체 코드와 치환하여 '매개 코드'를 생성할 수 있다. According to one embodiment, the code generation unit 210 can search for a code variable in the template code, and generate the 'intermediate code' by replacing the found code variable with the replacement code.

표 1에서 기재된 템플릿 코드에 대해 코드생성부(210)는 코드 변수로서 '${source}' 및 '${control}'를 탐색할 수 있다. For the template code described in Table 1, the code generator 210 can search for '$ {source}' and '$ {control}' as code variables.

그리고 코드생성부(210)는 코드 변수를 대체 코드로 치환함으로써 시험 코드를 생성할 수 있다.The code generation unit 210 can generate a test code by replacing the code variable with an alternative code.

예를 들어, 표 1에 기재된 코드 변수 각각은 하기의 표 2에서 기재된 바와 같이 코드 변수 각각에 대응되는 대체 코드를 치환테이블로 구현하고 있다.For example, each of the code variables listed in Table 1 implements the replacement code corresponding to each of the code variables as a replacement table, as described in Table 2 below.

[표 2][Table 2]

Figure 112018114614921-pat00002
Figure 112018114614921-pat00002

따라서 코드생성부(210)는 표 1에서의 코드 변수를 표 2의 대체 코드를 참조하여 매개 코드를 생성할 수 있으며 그에 따라 하기의 표 3에서 기재된 바와 같이 최종 시험 코드를 획득할 수 있다.Therefore, the code generation unit 210 can generate the intermediate code by referring to the substitution code of Table 2 for the code variable in Table 1, and thereby obtain the final test code as described in Table 3 below.

다만 매개 코드를 생성하였을 때 매개 코드 내에 코드 변수가 존재할 수 있으므로 코드생성부(210)는 매개 코드 내에서 코드 변수가 없을 때까지, 매개 코드 내에서 코드 변수를 탐색하고 탐색된 코드 변수를 대체 코드로 치환하는 과정을 반복할 수 있으며, 이러한 반복은 대체 코드 내에 코드 변수가 없을 때까지 계속할 수 있다. 그에 따라 코드 변수가 없는 매개 코드를 코드생성부(210)는 시험 코드로서 최종 결정할 수 있다.However, since the code variable may exist in the intermediate code when the intermediate code is generated, the code generation unit 210 searches for the code variable in the intermediate code until the code variable does not exist in the intermediate code, , And such repetition can continue until there are no code variables in the replacement code. The code generation unit 210 can finally determine the intermediate code having no code variable as the test code.

하기의 표 3에 도시된 바와 같이 코드생성부(210)는 1차로 치환된 매개 코드 내에서 코드 변수인 '${control}'를 감지할 수 있고, 상기 코드 변수를 치환함에 따라 2차 매개 코드를 생성할 수 있다. 마찬가지로 2차 매개 코드 내에서 코드 변수 '${bad_move}'를 감지한 코드생성부(210)는 상기 코드 변수를 대체 코드와 치환하여 매개 코드를 생성할 수 있으며 상기 매개 코드 내에 코드 변수가 없음을 결정함에 따라 상기 매개 코드를 최종 시험 코드로 결정할 수 있다.As shown in the following Table 3, the code generation unit 210 can detect a code variable '$ {control}' in a first-order substituted code code, and as a result of substituting the code variable, Lt; / RTI > Similarly, the code generation unit 210 detecting the code variable '$ {bad_move}' in the secondary intermediate code can generate the intermediate code by replacing the code variable with the replacement code, The intermediate code can be determined as the final test code.

[표 3][Table 3]

Figure 112018114614921-pat00003
Figure 112018114614921-pat00003

한편 코드 변수에 대응되는 대체 코드가 복수 개 존재할 수 있다. 즉 코드 변수에 대응되는 대체 코드가 복수 개 존재하도록 코드 테이블을 구성할 수 있으며, 그에 따라 하나의 코드 변수가 여러 경우를 표현할 수 있도록 대체 코드가 존재할 수 있다. 따라서 하나의 코드 변수에 대응되는 대체 코드가 복수 개 존재하는 경우 복수 개의 대체 코드의 조합을 통하여 다양한 프로그래밍 언어 요소에 대한 시험코드를 체계적으로 생성할 수 있다.On the other hand, there may be a plurality of replacement codes corresponding to the code variable. That is, the code table can be configured so that there are a plurality of substitution codes corresponding to the code variable, so that alternative codes can exist so that one code variable can express several cases. Therefore, if a plurality of replacement codes corresponding to one code variable exist, test codes for various programming language elements can be systematically generated through a combination of a plurality of replacement codes.

예를 들어 하기의 표 4에서 기재된 바와 같이, 표 1에서의 코드 변수 각각에 대해 2개의 대체 코드가 존재할 수 있으며 그에 따라 4가지의 시험 코드가 생성될 수 있다. 표 3에서는 시험 코드가 1개 나오는 반면, 표 4에 따르면 시험 코드가 4개가 도출될 수 있어 프로그래밍 언어 요소를 다양하게 사용하는 시험 코드를 생성할 수 있다. For example, as shown in Table 4 below, there may be two alternative codes for each of the code variables in Table 1 and thus four test codes may be generated. Table 3 shows one test code, whereas Table 4 shows that four test codes can be derived to generate test codes that use various programming language elements.

[표 4] [Table 4]

Figure 112018114614921-pat00004
Figure 112018114614921-pat00004

정적 분석 도구는 예를 들어, 배열을 사용하지 않은 코드에 대해서는 잘 검출하지만 배열만 사용하면 검출 능력이 떨어질 수 있다. 또한 정적 분석 도구는 예를 들어, C 언어에서 메모리를 할당하는 방법이 malloc, calloc 함수 등이 있는데, malloc을 사용했을 때는 도구가 잘 검출하는데 calloc을 사용하면 도구가 잘 검출하지 못할 수 있다. 코드생성부(210)가 상술된 바와 같이 다양하게 시험 코드를 생성함으로써 정적 분석 도구의 검출 성능을 보다 정확하게 판단할 수 있다.Static analysis tools, for example, are good at detecting code that does not use arrays, but using arrays alone can lead to poor detection. In addition, static analysis tools, for example, have a method for allocating memory in C language such as malloc, calloc function, etc. When using malloc, the tool can detect well, and when using calloc, the tool may not detect it well. The code generating unit 210 can generate the test codes variously as described above to more accurately determine the detection performance of the static analysis tool.

한편 코드생성부(210)는 코드 변수에 매칭되는 카테고리가 존재하는지 탐색할 수 있다. 이때 '카테고리'는 코드 변수에 매칭되는 대체 코드 중 선택의 기준이 되는 조건 정보이다.On the other hand, the code generation unit 210 can detect whether there is a category matching the code variable. At this time, 'category' is condition information that serves as a selection criterion among substitute codes matching code variables.

따라서 코드생성부(210)는 코드 변수에 매칭되는 카테고리가 존재하면 카테고리에 기초하여 상기 코드 변수에 매칭되는 대체 코드를 선택하여 선택된 대체 코드에 기초하여 시험 코드를 생성할 수 있다.Therefore, if there is a category matching the code variable, the code generating unit 210 may select an alternative code matching the code variable based on the category, and generate a test code based on the selected replacement code.

즉, 코드생성부(210)는 코드 변수에 매칭되는 대체 코드 중 소정의 카테고리를 갖는 대체 코드만을 선택하여 선택된 대체 코드에 기초하여 시험 코드를 생성할 수 있다.That is, the code generation unit 210 may select only the replacement code having the predetermined category among the replacement codes matching the code variable, and generate the test code based on the selected replacement code.

하기의 표 5에서 도시된 바와 같이, 카테고리 별루 매칭되는 대체 코드가 존재하며, 이에 예를 들어, 'str_external'의 카테고리가 선택되면 표 5의 첫번째와 두번째 테이블의 대체 코드가 코드 변수 'source'에 대해 선택되며, 나머지 코드 변수들에 대해서는 카테고리가 존재하지 않으므로 표 1의 템플릿 코드에 따르면, 코드 변수 'source'에 의해 2개의 대체 코드, 'control'에 의해 2개의 대체 코드, 그리고 'bad_move'에 의해 1개의 대체 코드가 존재하여 총 4가지의 시험 코드가 생성될 수 있다. 이에 따라 대체 코드를 다양한 조합으로 생성할 수 있고 그 조합을 선별할 수 있다. As shown in Table 5 below, there is a category-matching alternative code. For example, if the category of 'str_external' is selected, the replacement code of the first and second tables of Table 5 is changed to the code variable 'source' And there is no category for the remaining code variables. According to the template code in Table 1, two alternative codes are generated by the code variable 'source', two replacement codes are generated by 'control', and 'bad_move' There is one alternative code, so a total of four test codes can be generated. Accordingly, alternative codes can be created in various combinations and the combinations can be selected.

[표 5][Table 5]

Figure 112018114614921-pat00005
Figure 112018114614921-pat00005

한편 생성하고자 하는 하나의 패턴을 '스키마'라 한다. '스키마'는 템플릿 코드와 템플릿 코드에 대응되는 코드 테이블을 가질 수 있다. Meanwhile, one pattern to be generated is called a 'schema'. The 'schema' may have a code table corresponding to the template code and the template code.

즉, 표 6에서 도시된 바와 같이. 스키마 'default'는 3개의 템플릿 코드를 가질 수 있으며, 각각의 템플릿 코드에는 코드 테이블이 매칭되어 있다. 또한 스키마 'no_complextity'는 1개의 템플릿 코드를 가질 수 있으며 상기 템플릿 코드는 'basic.c'이며 'default'의 'basic.c'와 동일한 코드이나 'default'와는 상이한 코드 테이블을 갖는다.That is, as shown in Table 6. The schema 'default' can have three template codes, and each template code has a matching code table. Also, the schema 'no_complextity' can have one template code, and the template code is 'basic.c' and has the same code as 'basic.c' of 'default' or a code table different from 'default'.

[표 6][Table 6]

Figure 112018114614921-pat00006
Figure 112018114614921-pat00006

그에 따라 코드생성부(210)는 약점에 매칭되는 스키마에 따라 템플릿 코드를 결정하고, 템플릿 코드에 대응되는 코드 테이블을 기반으로 시험 코드를 생성할 수 있다. Accordingly, the code generation unit 210 can determine the template code according to the schema matching the weak point, and generate the test code based on the code table corresponding to the template code.

스키마에 대응되는 템플릿 코드가 복수 개이면, 코드생성부(210)는 복수 개의 템플릿 코드 중 임의의 템플릿 코드를 선택하여 선택된 템플릿 코드에 기초하여 시험 코드를 생성하거나, 복수 개의 템플릿 코드 각각에 기초하여 시험 코드를 생성할 수 있다.If there are a plurality of template codes corresponding to the schema, the code generation unit 210 generates a test code based on the selected template code by selecting an arbitrary template code among a plurality of template codes, You can generate test code.

코드생성부(210)는 사용자로부터 소정의 약점이 선택되면, 약점에 대응되는 스키마에 기초하여 시험 코드를 생성할 수 있다.The code generation unit 210 can generate a test code based on a schema corresponding to the weak point when a predetermined weak point is selected by the user.

하기의 표 7에서 도시된 바와 같이 약점 별로 스키마가 매칭되어 있고, 스키마 별 카테고리가 매칭되어 있다. 그에 따라 코드생성부(210)는 스키마에 대응되는 템플릿 코드 및 카테고리에 기초하여 시험 코드를 생성할 수 있다.As shown in the following Table 7, the schemas are matched according to weak points, and the categories are matched according to the schema. Accordingly, the code generation unit 210 can generate a test code based on the template code and the category corresponding to the schema.

[표 7][Table 7]

Figure 112018114614921-pat00007
Figure 112018114614921-pat00007

이때 메모리(140)에는 시험 코드의 생성을 위한 테이블이 저장되어 있을 수 있으며, '약점 테이블', '스키마 테이블', 및 '코드 테이블'이 저장되어 있을 수 있다.At this time, a table for generating a test code may be stored in the memory 140, and 'weak point table', 'schema table', and 'code table' may be stored.

'약점 테이블'은, 약점에 대응되는 스키마와 카테고리를 매칭시켜 저장할 수 있다. 또한 '스키마 테이블'은, 스키마 별로 사용할 템플릿 코드와 코드 테이블들을 매칭하여 저장할 수 있다. 또한 '코드 테이블'은 코드 변수에 대응되는 대체 코드를 저장할 수 있으며, 추가적으로 카테고리가 매칭되어 있을 수 있다. The weakness table can be stored by matching the schema and the category corresponding to the weakness. Also, the 'schema table' can store and store the template codes and code tables to be used for each schema. Also, the 'code table' may store replacement codes corresponding to the code variables, and the categories may be further matched.

관련하여 도 3은 도구 평가 장치를 설명하기 위한 예시도로서, 도구 평가 장치의 동작을 위한 테이블을 설명하기 위한 도면이다.3 is an exemplary diagram for explaining a tool evaluation apparatus and is a diagram for explaining a table for operation of the tool evaluation apparatus.

도 3에서 도시된 바와 같이, 약점 테이블(310)에 매칭되는 스키마는 하나 이상 존재할 수 있고, 그에 따라 스키마에 매칭되는 스키마 테이블(320)도 하나 이상 존재할 수 있다.As shown in FIG. 3, there may be one or more schemas matching the weakness table 310, and there may be at least one schema table 320 matching the schemes.

각 스키마 테이블(320)은 매칭되는 코드 테이블(330)이 존재하며, 코드 테이블(330)은 글로벌(global; 331), 제어(control; 332), 데이터(data; 333), 원인지점(source; 334) 및 발생지점(sink; 335) 중 적어도 하나를 포함할 수 있다. 글로벌 테이블은 약점 별 초기화 코드를 정의한다. 제어 테이블은 제어 복잡도를 적용하는 코드 템플릿을 정의한다. 데이터 테이블은 데이터 복잡도를 적용하는 코드 템플릿을 정의한다. 원인지점 테이블은 원인 지점 코드를 정의하며, 발생지점 테이블은 발생 지점 코드를 정의한다.Each schema table 320 has a matching code table 330 and the code table 330 includes a global 331, a control 332, data 333, a source 333, 334, and a sink 335. In one embodiment, The global table defines weak initialization code. The control table defines a code template that applies control complexity. The data table defines a code template that applies data complexity. The cause point table defines the cause point code, and the point of origin table defines the point code of occurrence.

결과적으로 코드생성부(210)는 사용자로부터 약점을 검출하기 위한 요청을 획득하면, 상기 약점에 대응되는 스키마 및 카테고리를 결정하고, 상기 카테고리 및 스키마에 대응되는 템플릿 코드에 기초하여 코드 테이블을 참조하여 시험 코드를 생성할 수 있다.As a result, the code generating unit 210 determines a schema and a category corresponding to the weak point when acquiring a request for detecting a weak point from the user, and refers to the code table based on the template code corresponding to the category and the schema You can generate test code.

한편 도 4 및 도 5는 일 실시예에 따른 정적 분석 도구를 평가하기 위한 방법을 설명하기 위한 순서도이다. 4 and 5 are flowcharts for explaining a method for evaluating a static analysis tool according to an embodiment.

도 4 및 도 5에 도시된 실시예에 따른 도구 평가 방법은 도 1 및 도 2에 도시된 도구 평가 장치(100)에서 시계열적으로 처리되는 단계들을 포함한다. 따라서, 이하에서 생략된 내용이라고 하더라도 도 1 및 도 2에 도시된 도구 평가 장치(100)에 관하여 이상에서 기술한 내용은 도 4 및 도 5에 도시된 실시예에 따른 도구 평가 방법에도 적용될 수 있다.The tool evaluation method according to the embodiment shown in Figs. 4 and 5 includes the steps of time-series processing in the tool evaluation apparatus 100 shown in Figs. 1 and 2. Therefore, even when omitted from the following description, the above description of the tool evaluation apparatus 100 shown in Figs. 1 and 2 can also be applied to the tool evaluation method according to the embodiment shown in Figs. 4 and 5 .

도구 평가 장치(100)는 템플릿 코드에 기초하여 시험 코드를 생성할 수 있다 (S410). The tool evaluation apparatus 100 may generate a test code based on the template code (S410).

도구 평가 장치(100)는 템플릿 코드 내에서의 코드 변수를 탐색할 수 있으며, 탐색된 코드 변수에 대응되는 대체 코드에 기초하여 매개 코드를 생성할 수 있다. 이때 도구 평가 장치(100)는 매개 코드 내에서 코드 변수가 없을 때까지, 코드 변수를 계속적으로 탐색할 수 있으며 탐색된 코드 변수를 대체 코드로 치환하여 매개 코드를 생성할 수 있다. 도구 평가 장치(100)는 매개 코드 내에서 코드 변수가 없을 때까지 위의 과정을 반복할 수 있으며 매개 코드 내에서 코드 변수가 없다면 상기 매개 코드를 시험 코드로 결정할 수 있다.The tool evaluation apparatus 100 can search for a code variable in the template code and generate an intermediate code based on the replacement code corresponding to the detected code variable. At this time, the tool evaluation apparatus 100 can continuously search the code variable until there is no code variable in the intermediate code, and generate the intermediate code by replacing the detected code variable with the replacement code. The tool evaluation apparatus 100 can repeat the above process until there is no code variable in the intermediate code and can determine the intermediate code as the test code if there is no code variable in the intermediate code.

도구 평가 장치(100)는 코드 변수에 매칭되는 대체 코드가 복수 개 존재하면 상기 복수 개의 대체 코드에 매칭되도록 대체 코드 복수 개 각각이 치환된 시험 코드를 복수 개 생성할 수 있다.The tool evaluation apparatus 100 can generate a plurality of test codes each of which is substituted with a plurality of replacement codes so as to match the plurality of replacement codes if a plurality of replacement codes matching the code variable exist.

또한 도구 평가 장치(100)는 코드 변수에 매칭되는 카테고리가 존재하면 상기 카테고리에 기초하여 코드 변수에 매칭되는 대체 코드를 선택하며 선택된 대체 코드에 기초하여 시험 코드를 생성할 수 있다.The tool evaluation apparatus 100 may also select an alternative code that matches the code variable based on the category if there is a category matching the code variable, and may generate the test code based on the selected replacement code.

상술된 바에 따라 생성된 시험 코드, 상기 시험 코드에 대한 정답 및 상기 시험 코드에 대한 오답 중 적어도 하나를 포함하는 벤치마크 집합을, 도구 평가 장치(100)는 생성할 수 있다 (S420).The tool evaluation apparatus 100 may generate a benchmark set that includes at least one of a test code generated according to the above, a correct answer to the test code, and an incorrect answer to the test code at operation S420.

한편 도 5에서 도시된 바와 같이, 도구 평가 장치(100)는 시험 코드를 생성하여 정적 분석 도구를 평가할 수 있다. 이때 도 5에서의 단계 S410 내지 S420는 도 4의 단계 S410 및 단계 S420에 관해 서술된 바와 같다. On the other hand, as shown in FIG. 5, the tool evaluation apparatus 100 can generate a test code to evaluate the static analysis tool. Here, steps S410 to S420 in FIG. 5 are the same as those described in step S410 and step S420 in FIG.

도구 평가 장치(100)는 약점을 선택할 수 있다(S510). 이때 도구 평가 장치(100)는 사용자로부터 약점을 입력받을 수 있으며 상기 약점을 선택된 약점으로 처리할 수 있다. 또한 도구 평가 장치(100)는 정적 분석 도구의 정확한 평가를 위해 임의로 약점을 선택할 수도 있다.The tool evaluation apparatus 100 can select a weak point (S510). At this time, the tool evaluation apparatus 100 can receive a weak point from the user and can process the weak point as a selected weak point. The tool evaluation apparatus 100 may also optionally select weaknesses for accurate evaluation of static analysis tools.

도구 평가 장치(100)는 약점에 대응되는 템플릿 코드를 선택할 수 있다 (S520).The tool evaluation apparatus 100 can select a template code corresponding to the weak point (S520).

이때 도구 평가 장치(100)는 약점에 대응되는 템플릿 코드와 함께 카테고리도 선택할 수 있다. At this time, the tool evaluation apparatus 100 can select the category together with the template code corresponding to the weak point.

그리고 도구 평가 장치(100)는 템플릿 코드에 기초하여 시험 코드를 생성할 수 있으며 (S410), 생성한 시험 코드, 상기 시험 코드에 대한 정답 및 상기 시험 코드에 대한 오답 중 적어도 하나를 포함하는 벤치마크 집합을 생성할 수 있다 (S420).The tool evaluation apparatus 100 may generate a test code based on the template code (S410), and the tool evaluation apparatus 100 may generate a test code based on the generated test code, a correct answer to the test code, and a wrong answer to the test code A set can be generated (S420).

그리고 도구 평가 장치(100)는 벤치마크 집합에 기초하여 정적 분석 도구를 평가할 수 있다 (S530). The tool evaluation apparatus 100 may then evaluate the static analysis tool based on the benchmark set (S530).

즉 도구 평가 장치(100)는 벤치마크 집합에 기초하여 정적 분석 도구를 실행시키고 정적 분석 도구가 검출하는 미탐 및 오탐 중 적어도 하나를 감지할 수 있다.That is, the tool evaluation apparatus 100 can execute the static analysis tool based on the benchmark set and detect at least one of a hit and a false that is detected by the static analysis tool.

그리고 도구 평가 장치(100)는 감지된 미탐 또는 오탐의 개수에 기초하여 정적 분석 도구의 품질을 평가할 수 있으며 평가에 따른 점수도 부여할 수 있다. Then, the tool evaluation apparatus 100 can evaluate the quality of the static analysis tool based on the number of detected slips or false positives, and can also give a score according to the evaluation.

이상의 실시예들에서 사용되는 '~부'라는 용어는 소프트웨어 또는 FPGA(field programmable gate array) 또는 ASIC 와 같은 하드웨어 구성요소를 의미하며, '~부'는 어떤 역할들을 수행한다. 그렇지만 '~부'는 소프트웨어 또는 하드웨어에 한정되는 의미는 아니다. '~부'는 어드레싱할 수 있는 저장 매체에 있도록 구성될 수도 있고 하나 또는 그 이상의 프로세서들을 재생시키도록 구성될 수도 있다. 따라서, 일 예로서 '~부'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램특허 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함한다.The term " part " used in the above embodiments means a hardware component such as a software or a field programmable gate array (FPGA) or an ASIC, and the 'part' performs certain roles. However, 'part' is not meant to be limited to software or hardware. &Quot; to " may be configured to reside on an addressable storage medium and may be configured to play one or more processors. Thus, by way of example, 'parts' may refer to components such as software components, object-oriented software components, class components and task components, and processes, functions, , Subroutines, segments of program patent code, drivers, firmware, microcode, circuitry, data, databases, data structures, tables, arrays, and variables.

구성요소들과 '~부'들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 '~부'들로 결합되거나 추가적인 구성요소들과 '~부'들로부터 분리될 수 있다.The functions provided within the components and components may be combined with a smaller number of components and components or separated from additional components and components.

뿐만 아니라, 구성요소들 및 '~부'들은 디바이스 또는 보안 멀티미디어카드 내의 하나 또는 그 이상의 CPU 들을 재생시키도록 구현될 수도 있다.In addition, the components and components may be implemented to play back one or more CPUs in a device or a secure multimedia card.

일 실시예에 따른 도구 평가 방법은 컴퓨터에 의해 실행 가능한 명령어 및 데이터를 저장하는, 컴퓨터로 판독 가능한 매체의 형태로도 구현될 수 있다. 이때, 명령어 및 데이터는 프로그램 코드의 형태로 저장될 수 있으며, 프로세서에 의해 실행되었을 때, 소정의 프로그램 모듈을 생성하여 소정의 동작을 수행할 수 있다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터에 의해 액세스될 수 있는 임의의 가용 매체일 수 있고, 휘발성 및 비휘발성 매체, 분리형 및 비분리형 매체를 모두 포함한다. 또한, 컴퓨터로 판독 가능한 매체는 컴퓨터 기록 매체일 수 있는데, 컴퓨터 기록 매체는 컴퓨터 판독 가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함할 수 있다.예를 들어, 컴퓨터 기록 매체는 HDD 및 SSD 등과 같은 마그네틱 저장 매체, CD, DVD 및 블루레이 디스크 등과 같은 광학적 기록 매체, 또는 네트워크를 통해 접근 가능한 서버에 포함되는 메모리일 수 있다. The tool evaluation method according to one embodiment may also be implemented in the form of a computer-readable medium for storing instructions and data executable by a computer. At this time, the command and data may be stored in the form of program code, and when executed by the processor, a predetermined program module may be generated to perform a predetermined operation. In addition, the computer-readable medium can be any available media that can be accessed by a computer and includes both volatile and nonvolatile media, removable and non-removable media. The computer-readable medium can also be a computer storage medium, which can be volatile and non-volatile, implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data, For example, computer recording media may include magnetic storage media such as HDDs and SSDs, optical recording media such as CD, DVD and Blu-ray discs, or other types of media accessible via a network. May be the memory included in the server.

또한 실시예에 따른 도구 평가 방법은 컴퓨터에 의해 실행 가능한 명령어를 포함하는 컴퓨터 프로그램(또는 컴퓨터 프로그램 제품)으로 구현될 수도 있다. 컴퓨터 프로그램은 프로세서에 의해 처리되는 프로그래밍 가능한 기계 명령어를 포함하고, 고레벨 프로그래밍 언어(High-level Programming Language), 객체 지향 프로그래밍 언어(Object-oriented Programming Language), 어셈블리 언어 또는 기계 언어 등으로 구현될 수 있다. 또한 컴퓨터 프로그램은 유형의 컴퓨터 판독가능 기록매체(예를 들어, 메모리, 하드디스크, 자기/광학 매체 또는 SSD(Solid-State Drive) 등)에 기록될 수 있다. Further, the tool evaluation method according to the embodiment may be implemented as a computer program (or a computer program product) including instructions executable by a computer. A computer program includes programmable machine instructions that are processed by a processor and can be implemented in a high-level programming language, an object-oriented programming language, an assembly language, or a machine language . The computer program may also be recorded on a computer readable recording medium of a type (e.g., memory, hard disk, magnetic / optical medium or solid-state drive).

따라서 실시예에 따른 도구 평가 방법은 상술한 바와 같은 컴퓨터 프로그램이 컴퓨팅 장치에 의해 실행됨으로써 구현될 수 있다. 컴퓨팅 장치는 프로세서와, 메모리와, 저장 장치와, 메모리 및 고속 확장포트에 접속하고 있는 고속 인터페이스와, 저속 버스와 저장 장치에 접속하고 있는 저속 인터페이스 중 적어도 일부를 포함할 수 있다. 이러한 성분들 각각은 다양한 버스를 이용하여 서로 접속되어 있으며, 공통 머더보드에 탑재되거나 다른 적절한 방식으로 장착될 수 있다. Thus, the tool evaluation method according to the embodiment can be implemented by the computer program as described above being executed by the computing device. The computing device may include a processor, a memory, a storage device, a high-speed interface connected to the memory and a high-speed expansion port, and a low-speed interface connected to the low-speed bus and the storage device. Each of these components is connected to each other using a variety of buses and can be mounted on a common motherboard or mounted in any other suitable manner.

여기서 프로세서는 컴퓨팅 장치 내에서 명령어를 처리할 수 있는데, 이런 명령어로는, 예컨대 고속 인터페이스에 접속된 디스플레이처럼 외부 입력, 출력 장치상에 GUI(Graphic User Interface)를 제공하기 위한 그래픽 정보를 표시하기 위해 메모리나 저장 장치에 저장된 명령어를 들 수 있다. 다른 실시예로서, 다수의 프로세서 및(또는) 다수의 버스가 적절히 다수의 메모리 및 메모리 형태와 함께 이용될 수 있다. 또한 프로세서는 독립적인 다수의 아날로그 및(또는) 디지털 프로세서를 포함하는 칩들이 이루는 칩셋으로 구현될 수 있다. Where the processor may process instructions within the computing device, such as to display graphical information to provide a graphical user interface (GUI) on an external input, output device, such as a display connected to a high speed interface And commands stored in memory or storage devices. As another example, multiple processors and / or multiple busses may be used with multiple memory and memory types as appropriate. The processor may also be implemented as a chipset comprised of chips comprising multiple independent analog and / or digital processors.

또한 메모리는 컴퓨팅 장치 내에서 정보를 저장한다. 일례로, 메모리는 휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 다른 예로, 메모리는 비휘발성 메모리 유닛 또는 그들의 집합으로 구성될 수 있다. 또한 메모리는 예컨대, 자기 혹은 광 디스크와 같이 다른 형태의 컴퓨터 판독 가능한 매체일 수도 있다. The memory also stores information within the computing device. In one example, the memory may comprise volatile memory units or a collection thereof. In another example, the memory may be comprised of non-volatile memory units or a collection thereof. The memory may also be another type of computer readable medium such as, for example, a magnetic or optical disk.

그리고 저장장치는 컴퓨팅 장치에게 대용량의 저장공간을 제공할 수 있다. 저장 장치는 컴퓨터 판독 가능한 매체이거나 이런 매체를 포함하는 구성일 수 있으며, 예를 들어 SAN(Storage Area Network) 내의 장치들이나 다른 구성도 포함할 수 있고, 플로피 디스크 장치, 하드 디스크 장치, 광 디스크 장치, 혹은 테이프 장치, 플래시 메모리, 그와 유사한 다른 반도체 메모리 장치 혹은 장치 어레이일 수 있다. And the storage device can provide a large amount of storage space to the computing device. The storage device may be a computer readable medium or a configuration including such a medium and may include, for example, devices in a SAN (Storage Area Network) or other configurations, and may be a floppy disk device, a hard disk device, Or a tape device, flash memory, or other similar semiconductor memory device or device array.

상술된 실시예들은 예시를 위한 것이며, 상술된 실시예들이 속하는 기술분야의 통상의 지식을 가진 자는 상술된 실시예들이 갖는 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 쉽게 변형이 가능하다는 것을 이해할 수 있을 것이다. 그러므로 상술된 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 예를 들어, 단일형으로 설명되어 있는 각 구성 요소는 분산되어 실시될 수도 있으며, 마찬가지로 분산된 것으로 설명되어 있는 구성 요소들도 결합된 형태로 실시될 수 있다.It will be apparent to those skilled in the art that the above-described embodiments are for illustrative purposes only and that those skilled in the art will readily understand that other embodiments can be readily modified without departing from the spirit or essential characteristics of the embodiments described above You will understand. It is therefore to be understood that the above-described embodiments are to be considered in all respects only as illustrative and not restrictive. For example, each component described as a single entity may be distributed and implemented, and components described as being distributed may also be implemented in a combined form.

본 명세서를 통해 보호 받고자 하는 범위는 상기 상세한 설명보다는 후술하는 특허청구범위에 의하여 나타내어지며, 특허청구범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태를 포함하는 것으로 해석되어야 한다.It is to be understood that the scope of the present invention is defined by the appended claims rather than the foregoing description and should be construed as including all changes and modifications that come within the meaning and range of equivalency of the claims, .

100: 도구 평가 장치
110: 입출력부 120: 제어부
130: 통신부 140: 메모리
100: tool evaluation device
110: input / output unit 120:
130: communication unit 140: memory

Claims (16)

정적 분석 도구를 평가하기 위한 도구 평가 장치로서,
템플릿 코드를 하나 이상 저장하는 메모리; 및
템플릿 코드에 기초하여 시험 코드를 생성하고, 상기 시험 코드, 상기 시험 코드에 대한 정답 및 상기 시험 코드에 대한 오답 중 적어도 하나를 포함하는 벤치마크 집합을 생성하는 제어부를 포함하고
상기 제어부는,
상기 템플릿 코드 내에서의 코드 변수를 탐색하며, 탐색된 코드 변수에 대응되는 대체 코드에 기초하여 매개 코드를 생성하는, 정적 분석 도구의 평가 장치.
A tool evaluation device for evaluating a static analysis tool,
Memory for storing one or more template codes; And
Generating a test code based on the template code, and generating a set of benchmarks including at least one of the test code, the correct answer to the test code, and an incorrect answer to the test code
Wherein,
Searching for a code variable in the template code, and generating an intermediate code based on an alternative code corresponding to the searched code variable.
제 1 항에 있어서,
상기 제어부는,
상기 벤치마크 집합에 대해 정적 분석 도구를 적용함으로써 상기 정적 분석 도구의 품질을 평가하는, 정적 분석 도구의 평가 장치.
The method according to claim 1,
Wherein,
And evaluating the quality of the static analysis tool by applying a static analysis tool to the benchmark set.
삭제delete 제 1 항에 있어서,
상기 제어부는,
상기 매개 코드 내에서 코드 변수가 없을 때까지 상기 코드 변수를 탐색하고 매개 코드를 추가적으로 생성하며, 생성된 매개 코드 내에 코드 변수가 없다면 상기 생성된 매개 코드를 상기 시험 코드로 결정하는, 정적 분석 도구의 평가 장치.
The method according to claim 1,
Wherein,
A static analysis tool that searches the code variable until there is no code variable in the intermediate code and additionally generates intermediate code and determines the generated intermediate code as the test code if there is no code variable in the generated intermediate code Evaluation device.
제 1 항에 있어서,
상기 제어부는,
상기 코드 변수에 매칭되는 대체 코드가 복수 개 존재하면 상기 복수 개의 대체 코드에 매칭되도록 대체 코드 복수 개 각각이 치환된 시험 코드를 복수 개 생성하는, 정적 분석 도구의 평가 장치.
The method according to claim 1,
Wherein,
And generates a plurality of replacement test codes each of which is substituted with a plurality of replacement codes so as to match the plurality of replacement codes if a plurality of replacement codes matching the code variable exist.
제 1 항에 있어서,
상기 제어부는,
상기 코드 변수에 매칭되는 카테고리에 기초하여 상기 코드 변수에 매칭되는 대체 코드를 선택하고 선택된 대체 코드에 기초하여 상기 시험 코드를 생성하는, 정적 분석 도구의 평가 장치.
The method according to claim 1,
Wherein,
Selecting an alternative code matching the code variable based on a category matched to the code variable, and generating the test code based on the selected replacement code.
제 1 항에 있어서,
상기 제어부는,
약점에 기초하여 선택된 스키마 정보에 기초하여 템플릿 코드를 선택하는, 정적 분석 도구의 평가 장치.
The method according to claim 1,
Wherein,
Wherein the template code is selected based on the schema information selected based on the weakness.
도구 평가 장치가 정적 분석 도구를 평가하기 위한 방법으로서,
템플릿 코드에 기초하여 시험 코드를 생성하는 단계; 및
상기 시험 코드, 상기 시험 코드에 대한 정답 및 상기 시험 코드에 대한 오답 중 적어도 하나를 포함하는 벤치마크 집합을 생성하는 단계를 포함하고,
상기 시험 코드를 생성하는 단계는,
상기 템플릿 코드 내에서의 코드 변수를 탐색하는 단계; 및
탐색된 코드 변수에 대응되는 대체 코드에 기초하여 매개 코드를 생성하는 단계를 포함하는, 정적 분석 도구의 평가 방법.
A method for evaluating a static analysis tool by a tool evaluation apparatus,
Generating a test code based on the template code; And
Generating a set of benchmarks comprising at least one of the test code, a correct answer to the test code, and an incorrect answer to the test code,
Wherein the generating the test code comprises:
Searching a code variable in the template code; And
And generating an intermediate code based on an alternative code corresponding to the searched code variable.
제 8 항에 있어서,
상기 벤치마크 집합에 대해 정적 분석 도구를 적용함으로써 상기 정적 분석 도구의 품질을 평가하는 단계를 더 포함하는, 정적 분석 도구의 평가 방법.
9. The method of claim 8,
Further comprising evaluating the quality of the static analysis tool by applying a static analysis tool to the set of benchmarks.
삭제delete 제 8 항에 있어서,
상기 시험 코드를 생성하는 단계는,
상기 매개 코드 내에서 코드 변수가 없을 때까지, 상기 코드 변수를 탐색하는 단계 및 상기 매개 코드를 생성하는 단계를 반복하는 단계; 및
생성된 매개 코드 내에 코드 변수가 없다면 상기 생성된 매개 코드를 상기 시험 코드로 결정하는 단계를 더 포함하는, 정적 분석 도구의 평가 방법.
9. The method of claim 8,
Wherein the generating the test code comprises:
Repeating the steps of searching for the code variable and generating the intermediate code until there is no code variable in the intermediate code; And
And if the code parameter is not present in the generated intermediate code, determining the generated intermediate code as the test code.
제 8 항에 있어서,
상기 시험 코드를 생성하는 단계는,
상기 코드 변수에 매칭되는 대체 코드가 복수 개 존재하면 상기 복수 개의 대체 코드에 매칭되도록 대체 코드 복수 개 각각이 치환된 시험 코드를 복수 개 생성하는 단계를 포함하는, 정적 분석 도구의 평가 방법.
9. The method of claim 8,
Wherein the generating the test code comprises:
And generating a plurality of replacement test codes each of which is replaced with a plurality of replacement codes so as to match the plurality of replacement codes if a plurality of replacement codes matching the code variable are present.
제 8 항에 있어서,
상기 시험 코드를 생성하는 단계는,
상기 코드 변수에 매칭되는 카테고리에 기초하여 상기 코드 변수에 매칭되는 대체 코드를 선택하는 단계; 및
선택된 대체 코드에 기초하여 상기 시험 코드를 생성하는 단계를 포함하는, 정적 분석 도구의 평가 방법.
9. The method of claim 8,
Wherein the generating the test code comprises:
Selecting an alternative code that matches the code variable based on a category matching the code variable; And
And generating the test code based on the selected replacement code.
제 8 항에 있어서,
상기 시험 코드를 생성하는 단계 이전에,
약점에 기초하여 선택된 스키마 정보에 기초하여 템플릿 코드를 선택하는 단계를 더 포함하는, 정적 분석 도구의 평가 방법.
9. The method of claim 8,
Before the step of generating the test code,
Further comprising the step of selecting a template code based on the selected schema information based on weaknesses.
제 8 항에 기재된 방법을 수행하는 프로그램이 기록된 컴퓨터 판독 가능한 기록 매체.A computer-readable recording medium on which a program for performing the method according to claim 8 is recorded. 정적 분석 도구의 평가 장치에 의해 수행되며, 제 8 항에 기재된 방법을 수행하기 위해 매체에 저장된 컴퓨터 프로그램.A computer program stored in a medium for performing the method of claim 8 performed by an evaluation device of a static analysis tool.
KR1020180142242A 2018-11-19 2018-11-19 Method for evaluating tool for analyzing program and apparatus thereof KR101996878B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180142242A KR101996878B1 (en) 2018-11-19 2018-11-19 Method for evaluating tool for analyzing program and apparatus thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180142242A KR101996878B1 (en) 2018-11-19 2018-11-19 Method for evaluating tool for analyzing program and apparatus thereof

Publications (1)

Publication Number Publication Date
KR101996878B1 true KR101996878B1 (en) 2019-07-05

Family

ID=67225328

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180142242A KR101996878B1 (en) 2018-11-19 2018-11-19 Method for evaluating tool for analyzing program and apparatus thereof

Country Status (1)

Country Link
KR (1) KR101996878B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024152628A1 (en) * 2023-01-20 2024-07-25 华为云计算技术有限公司 Code review method and apparatus based on cloud service

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05173773A (en) * 1991-12-25 1993-07-13 Shimadzu Corp Device for preparing module for test
JP2016004569A (en) * 2014-06-16 2016-01-12 トヨタ自動車株式会社 Code base risk analysis using static analysis and performance data

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05173773A (en) * 1991-12-25 1993-07-13 Shimadzu Corp Device for preparing module for test
JP2016004569A (en) * 2014-06-16 2016-01-12 トヨタ自動車株式会社 Code base risk analysis using static analysis and performance data

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024152628A1 (en) * 2023-01-20 2024-07-25 华为云计算技术有限公司 Code review method and apparatus based on cloud service

Similar Documents

Publication Publication Date Title
US10387292B2 (en) Determining application test results using screenshot metadata
US10747652B2 (en) Automatic risk analysis of software
US9442832B2 (en) User workflow replication for execution error analysis
US20120079456A1 (en) Systems and methods for identifying software performance influencers
US20160335168A1 (en) Real-time analysis of application programming interfaces
US9558089B2 (en) Testing insecure computing environments using random data sets generated from characterizations of real data sets
US20150324271A1 (en) Method and system for measuring user engagement with content items
US20220300698A1 (en) Techniques for web framework detection
CN110647459B (en) Application testing method and device
WO2017007866A1 (en) Visualizing resource relationships using key performance indicators
US8862556B2 (en) Difference analysis in file sub-regions
KR101996878B1 (en) Method for evaluating tool for analyzing program and apparatus thereof
KR101767481B1 (en) Method and device for analyzing program
JP2020170427A (en) Model creation supporting method and model creation supporting system
KR102116395B1 (en) Apparatus and method for testing application
WO2019090691A1 (en) Monkey testing method and terminal
KR20180119260A (en) Method and device for analyzing program
US10324822B1 (en) Data analytics in a software development cycle
CN105302700A (en) Method and equipment for recording user operation on touch terminal
US11954569B2 (en) Techniques for parallel model training
US9286349B2 (en) Dynamic search system
WO2015039585A1 (en) Method and device for testing software reliability
US20150178075A1 (en) Enhancing understandability of code using code clones
KR20180120966A (en) Method and device for defect tracking
KR20190120983A (en) Apparatus and method for testinig appalication

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right
GRNT Written decision to grant