KR101996878B1 - Method for evaluating tool for analyzing program and apparatus thereof - Google Patents
Method for evaluating tool for analyzing program and apparatus thereof Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3696—Methods or tools to render software testable
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test 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
Description
본 명세서에서 개시되는 실시예들은 정적 분석 도구를 평가하기 위한 방법 및 그 장치에 관한 것으로, 보다 상세하게는 소스코드의 약점을 검출하는 정적 분석 도구의 정확도를 향상시키기 위해 정적 분석 도구를 평가하기 위한 방법 및 장치에 관한 것이다.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
이러한 도구 평가 장치(100)는 애플리케이션이 설치된 전자단말기로 구현될 수 있거나 또는 서버-클라이언트 시스템으로 구현될 수 있으며, 상기 시스템은 유저와의 인터랙션을 위한 클라이언트가 설치된 전자단말기를 포함할 수 있다.The
전자단말기는 네트워크(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
입출력부(110)는 사용자로부터 입력을 수신하기 위한 입력부와, 작업의 수행 결과 또는 도구 평가 장치(100)의 상태 등의 정보를 표시하기 위한 출력부를 포함할 수 있다. 예를 들어, 입출력부(110)는 사용자 입력을 수신하는 조작 패널(operation panel) 및 화면을 표시하는 디스플레이 패널(display panel) 등을 포함할 수 있다.The input /
구체적으로, 입력부는 키보드, 물리 버튼, 터치 스크린, 카메라 또는 마이크 등과 같이 다양한 형태의 사용자 입력을 수신할 수 있는 장치들을 포함할 수 있다. 또한, 출력부는 디스플레이 패널 또는 스피커 등을 포함할 수 있다. 다만, 이에 한정되지 않고 입출력부(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 /
제어부(120)는 도구 평가 장치(100)의 전체적인 동작을 제어하며, CPU 등과 같은 프로세서를 포함할 수 있다. 제어부(120)는 입출력부(110)를 통해 수신한 사용자 입력에 대응되는 동작을 수행하도록 단말(100)에 포함된 다른 구성들을 제어할 수 있다.The
예를 들어, 제어부(120)는 메모리(140)에 저장된 프로그램을 실행시키거나, 메모리(140)에 저장된 파일을 읽어오거나, 새로운 파일을 메모리(140)에 저장할 수도 있다.For example, the
이와 같은 제어부(120)는 코드생성부(210), 집합생성부(220) 및 품질평가부(230)를 포함하며 이는 도 2를 참조하여 후술된다.The
통신부(130)는 다른 디바이스 또는 네트워크와 유무선 통신을 수행할 수 있다. 이를 위해, 통신부(130)는 다양한 유무선 통신 방법 중 적어도 하나를 지원하는 통신 모듈을 포함할 수 있다. 예를 들어, 통신 모듈은 칩셋(chipset)의 형태로 구현될 수 있다.The
통신부(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
메모리(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
이와 같은 메모리(140)에는 약점 테이블, 스키마 테이블 및 코드 테이블 중 적어도 하나가 저장될 수 있다. In the
일 실시예에 따르면, 입출력부(110)를 통해 사용자로부터 정적 분석 도구의 평가를 요청하는 입력을 수신하면, 제어부(120)는 메모리(140)에 저장된 프로그램을 실행시켜 정적 분석 도구의 평가를 수행한다. According to one embodiment, upon receiving an input requesting evaluation of a static analysis tool from a user through the input /
도 2는 도 1에 도시된 제어부(120)를 도시한 블록도이다.2 is a block diagram showing the
제어부(120)는 코드생성부(210)를 포함할 수 있다.The
추가적으로 제어부(120)는 집합생성부(220) 및 품질평가부(230)를 더 포함할 수 있다.In addition, the
집합생성부(220)는 코드생성부(210)에 의해 생성된 시험 코드와, 상기 시험 코드에 대한 정답 및 상기 시험 코드에 대한 오답 중 적어도 하나를 포함하는 벤치마크 집합을 생성할 수 있다. The
품질평가부(230)는 벤치마크 집합에 기초하여 정적 분석 도구를 실행시키고 정적 분석 도구가 검출하는 미탐 및 오탐 중 적어도 하나를 감지한다. The
예를 들어 품질평가부(230)는 벤치마크 집합에 속하는 시험 코드에 대해 정적 분석 도구를 실행시키고 그 결과 검출된 정답 또는 오답에 기초하여 정적 분석 도구의 미탐 또는 오탐을 감지한다.For example, the
품질평가부(230)는 감지된 미탐 또는 오탐의 개수에 기초하여 정적 분석 도구의 품질을 평가할 수 있으며 평가에 따른 점수도 부여할 수 있다. 일 실시예에 따르면 품질평가부(230)는 검출 결과에 미탐과 오탐이 적을수록 좋은 정적 분석 도구라 평가할 수 있다.The
한편 코드생성부(210)는 정적 분석 도구를 적용하기 위한 시험 코드를 생성할 수 있다. Meanwhile, the
일 실시예에 따르면 코드생성부(210)는 템플릿 코드에 기초하여 시험 코드를 생성할 수 있다.According to one embodiment, the
이때 '템플릿 코드'는 '코드 변수'를 포함하는 소스 코드를 의미하며, 후술될 스키마에 따라 결정될 수 있다. '코드 변수'는 약점을 가질 수 있는 코드를 의미한다. 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]
일 실시예에 따르면 코드생성부(210)는 템플릿 코드 내에서의 코드 변수를 탐색할 수 있으며, 탐색된 코드 변수를 대체 코드와 치환하여 '매개 코드'를 생성할 수 있다. According to one embodiment, the
표 1에서 기재된 템플릿 코드에 대해 코드생성부(210)는 코드 변수로서 '${source}' 및 '${control}'를 탐색할 수 있다. For the template code described in Table 1, the
그리고 코드생성부(210)는 코드 변수를 대체 코드로 치환함으로써 시험 코드를 생성할 수 있다.The
예를 들어, 표 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]
따라서 코드생성부(210)는 표 1에서의 코드 변수를 표 2의 대체 코드를 참조하여 매개 코드를 생성할 수 있으며 그에 따라 하기의 표 3에서 기재된 바와 같이 최종 시험 코드를 획득할 수 있다.Therefore, the
다만 매개 코드를 생성하였을 때 매개 코드 내에 코드 변수가 존재할 수 있으므로 코드생성부(210)는 매개 코드 내에서 코드 변수가 없을 때까지, 매개 코드 내에서 코드 변수를 탐색하고 탐색된 코드 변수를 대체 코드로 치환하는 과정을 반복할 수 있으며, 이러한 반복은 대체 코드 내에 코드 변수가 없을 때까지 계속할 수 있다. 그에 따라 코드 변수가 없는 매개 코드를 코드생성부(210)는 시험 코드로서 최종 결정할 수 있다.However, since the code variable may exist in the intermediate code when the intermediate code is generated, the
하기의 표 3에 도시된 바와 같이 코드생성부(210)는 1차로 치환된 매개 코드 내에서 코드 변수인 '${control}'를 감지할 수 있고, 상기 코드 변수를 치환함에 따라 2차 매개 코드를 생성할 수 있다. 마찬가지로 2차 매개 코드 내에서 코드 변수 '${bad_move}'를 감지한 코드생성부(210)는 상기 코드 변수를 대체 코드와 치환하여 매개 코드를 생성할 수 있으며 상기 매개 코드 내에 코드 변수가 없음을 결정함에 따라 상기 매개 코드를 최종 시험 코드로 결정할 수 있다.As shown in the following Table 3, the
[표 3][Table 3]
한편 코드 변수에 대응되는 대체 코드가 복수 개 존재할 수 있다. 즉 코드 변수에 대응되는 대체 코드가 복수 개 존재하도록 코드 테이블을 구성할 수 있으며, 그에 따라 하나의 코드 변수가 여러 경우를 표현할 수 있도록 대체 코드가 존재할 수 있다. 따라서 하나의 코드 변수에 대응되는 대체 코드가 복수 개 존재하는 경우 복수 개의 대체 코드의 조합을 통하여 다양한 프로그래밍 언어 요소에 대한 시험코드를 체계적으로 생성할 수 있다.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]
정적 분석 도구는 예를 들어, 배열을 사용하지 않은 코드에 대해서는 잘 검출하지만 배열만 사용하면 검출 능력이 떨어질 수 있다. 또한 정적 분석 도구는 예를 들어, 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
한편 코드생성부(210)는 코드 변수에 매칭되는 카테고리가 존재하는지 탐색할 수 있다. 이때 '카테고리'는 코드 변수에 매칭되는 대체 코드 중 선택의 기준이 되는 조건 정보이다.On the other hand, the
따라서 코드생성부(210)는 코드 변수에 매칭되는 카테고리가 존재하면 카테고리에 기초하여 상기 코드 변수에 매칭되는 대체 코드를 선택하여 선택된 대체 코드에 기초하여 시험 코드를 생성할 수 있다.Therefore, if there is a category matching the code variable, the
즉, 코드생성부(210)는 코드 변수에 매칭되는 대체 코드 중 소정의 카테고리를 갖는 대체 코드만을 선택하여 선택된 대체 코드에 기초하여 시험 코드를 생성할 수 있다.That is, the
하기의 표 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]
한편 생성하고자 하는 하나의 패턴을 '스키마'라 한다. '스키마'는 템플릿 코드와 템플릿 코드에 대응되는 코드 테이블을 가질 수 있다. 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]
그에 따라 코드생성부(210)는 약점에 매칭되는 스키마에 따라 템플릿 코드를 결정하고, 템플릿 코드에 대응되는 코드 테이블을 기반으로 시험 코드를 생성할 수 있다. Accordingly, the
스키마에 대응되는 템플릿 코드가 복수 개이면, 코드생성부(210)는 복수 개의 템플릿 코드 중 임의의 템플릿 코드를 선택하여 선택된 템플릿 코드에 기초하여 시험 코드를 생성하거나, 복수 개의 템플릿 코드 각각에 기초하여 시험 코드를 생성할 수 있다.If there are a plurality of template codes corresponding to the schema, the
코드생성부(210)는 사용자로부터 소정의 약점이 선택되면, 약점에 대응되는 스키마에 기초하여 시험 코드를 생성할 수 있다.The
하기의 표 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
[표 7][Table 7]
이때 메모리(140)에는 시험 코드의 생성을 위한 테이블이 저장되어 있을 수 있으며, '약점 테이블', '스키마 테이블', 및 '코드 테이블'이 저장되어 있을 수 있다.At this time, a table for generating a test code may be stored in the
'약점 테이블'은, 약점에 대응되는 스키마와 카테고리를 매칭시켜 저장할 수 있다. 또한 '스키마 테이블'은, 스키마 별로 사용할 템플릿 코드와 코드 테이블들을 매칭하여 저장할 수 있다. 또한 '코드 테이블'은 코드 변수에 대응되는 대체 코드를 저장할 수 있으며, 추가적으로 카테고리가 매칭되어 있을 수 있다. 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
결과적으로 코드생성부(210)는 사용자로부터 약점을 검출하기 위한 요청을 획득하면, 상기 약점에 대응되는 스키마 및 카테고리를 결정하고, 상기 카테고리 및 스키마에 대응되는 템플릿 코드에 기초하여 코드 테이블을 참조하여 시험 코드를 생성할 수 있다.As a result, the
한편 도 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
도구 평가 장치(100)는 템플릿 코드에 기초하여 시험 코드를 생성할 수 있다 (S410). The
도구 평가 장치(100)는 템플릿 코드 내에서의 코드 변수를 탐색할 수 있으며, 탐색된 코드 변수에 대응되는 대체 코드에 기초하여 매개 코드를 생성할 수 있다. 이때 도구 평가 장치(100)는 매개 코드 내에서 코드 변수가 없을 때까지, 코드 변수를 계속적으로 탐색할 수 있으며 탐색된 코드 변수를 대체 코드로 치환하여 매개 코드를 생성할 수 있다. 도구 평가 장치(100)는 매개 코드 내에서 코드 변수가 없을 때까지 위의 과정을 반복할 수 있으며 매개 코드 내에서 코드 변수가 없다면 상기 매개 코드를 시험 코드로 결정할 수 있다.The
도구 평가 장치(100)는 코드 변수에 매칭되는 대체 코드가 복수 개 존재하면 상기 복수 개의 대체 코드에 매칭되도록 대체 코드 복수 개 각각이 치환된 시험 코드를 복수 개 생성할 수 있다.The
또한 도구 평가 장치(100)는 코드 변수에 매칭되는 카테고리가 존재하면 상기 카테고리에 기초하여 코드 변수에 매칭되는 대체 코드를 선택하며 선택된 대체 코드에 기초하여 시험 코드를 생성할 수 있다.The
상술된 바에 따라 생성된 시험 코드, 상기 시험 코드에 대한 정답 및 상기 시험 코드에 대한 오답 중 적어도 하나를 포함하는 벤치마크 집합을, 도구 평가 장치(100)는 생성할 수 있다 (S420).The
한편 도 5에서 도시된 바와 같이, 도구 평가 장치(100)는 시험 코드를 생성하여 정적 분석 도구를 평가할 수 있다. 이때 도 5에서의 단계 S410 내지 S420는 도 4의 단계 S410 및 단계 S420에 관해 서술된 바와 같다. On the other hand, as shown in FIG. 5, the
도구 평가 장치(100)는 약점을 선택할 수 있다(S510). 이때 도구 평가 장치(100)는 사용자로부터 약점을 입력받을 수 있으며 상기 약점을 선택된 약점으로 처리할 수 있다. 또한 도구 평가 장치(100)는 정적 분석 도구의 정확한 평가를 위해 임의로 약점을 선택할 수도 있다.The
도구 평가 장치(100)는 약점에 대응되는 템플릿 코드를 선택할 수 있다 (S520).The
이때 도구 평가 장치(100)는 약점에 대응되는 템플릿 코드와 함께 카테고리도 선택할 수 있다. At this time, the
그리고 도구 평가 장치(100)는 템플릿 코드에 기초하여 시험 코드를 생성할 수 있으며 (S410), 생성한 시험 코드, 상기 시험 코드에 대한 정답 및 상기 시험 코드에 대한 오답 중 적어도 하나를 포함하는 벤치마크 집합을 생성할 수 있다 (S420).The
그리고 도구 평가 장치(100)는 벤치마크 집합에 기초하여 정적 분석 도구를 평가할 수 있다 (S530). The
즉 도구 평가 장치(100)는 벤치마크 집합에 기초하여 정적 분석 도구를 실행시키고 정적 분석 도구가 검출하는 미탐 및 오탐 중 적어도 하나를 감지할 수 있다.That is, the
그리고 도구 평가 장치(100)는 감지된 미탐 또는 오탐의 개수에 기초하여 정적 분석 도구의 품질을 평가할 수 있으며 평가에 따른 점수도 부여할 수 있다. Then, the
이상의 실시예들에서 사용되는 '~부'라는 용어는 소프트웨어 또는 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.
상기 제어부는,
상기 벤치마크 집합에 대해 정적 분석 도구를 적용함으로써 상기 정적 분석 도구의 품질을 평가하는, 정적 분석 도구의 평가 장치. 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.
상기 제어부는,
상기 매개 코드 내에서 코드 변수가 없을 때까지 상기 코드 변수를 탐색하고 매개 코드를 추가적으로 생성하며, 생성된 매개 코드 내에 코드 변수가 없다면 상기 생성된 매개 코드를 상기 시험 코드로 결정하는, 정적 분석 도구의 평가 장치.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.
상기 제어부는,
상기 코드 변수에 매칭되는 대체 코드가 복수 개 존재하면 상기 복수 개의 대체 코드에 매칭되도록 대체 코드 복수 개 각각이 치환된 시험 코드를 복수 개 생성하는, 정적 분석 도구의 평가 장치.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.
상기 제어부는,
상기 코드 변수에 매칭되는 카테고리에 기초하여 상기 코드 변수에 매칭되는 대체 코드를 선택하고 선택된 대체 코드에 기초하여 상기 시험 코드를 생성하는, 정적 분석 도구의 평가 장치.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.
상기 제어부는,
약점에 기초하여 선택된 스키마 정보에 기초하여 템플릿 코드를 선택하는, 정적 분석 도구의 평가 장치.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.
상기 벤치마크 집합에 대해 정적 분석 도구를 적용함으로써 상기 정적 분석 도구의 품질을 평가하는 단계를 더 포함하는, 정적 분석 도구의 평가 방법. 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.
상기 시험 코드를 생성하는 단계는,
상기 매개 코드 내에서 코드 변수가 없을 때까지, 상기 코드 변수를 탐색하는 단계 및 상기 매개 코드를 생성하는 단계를 반복하는 단계; 및
생성된 매개 코드 내에 코드 변수가 없다면 상기 생성된 매개 코드를 상기 시험 코드로 결정하는 단계를 더 포함하는, 정적 분석 도구의 평가 방법.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.
상기 시험 코드를 생성하는 단계는,
상기 코드 변수에 매칭되는 대체 코드가 복수 개 존재하면 상기 복수 개의 대체 코드에 매칭되도록 대체 코드 복수 개 각각이 치환된 시험 코드를 복수 개 생성하는 단계를 포함하는, 정적 분석 도구의 평가 방법.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.
상기 시험 코드를 생성하는 단계는,
상기 코드 변수에 매칭되는 카테고리에 기초하여 상기 코드 변수에 매칭되는 대체 코드를 선택하는 단계; 및
선택된 대체 코드에 기초하여 상기 시험 코드를 생성하는 단계를 포함하는, 정적 분석 도구의 평가 방법.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.
상기 시험 코드를 생성하는 단계 이전에,
약점에 기초하여 선택된 스키마 정보에 기초하여 템플릿 코드를 선택하는 단계를 더 포함하는, 정적 분석 도구의 평가 방법.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.
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)
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)
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 |
-
2018
- 2018-11-19 KR KR1020180142242A patent/KR101996878B1/en active IP Right Grant
Patent Citations (2)
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)
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 |