순환복잡도분석 SW 가이드 - 안전성확보를위한순환복잡도관리 - 소프트웨어안전성보증연구센터

Similar documents
슬라이드 1

슬라이드 1

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Microsoft PowerPoint - 11주차_Android_GoogleMap.ppt [호환 모드]

PowerPoint Template

4S 1차년도 평가 발표자료

JDK이클립스

Microsoft PowerPoint SDK설치.HelloAndroid(1.5h).pptx

NTD36HD Manual

Microsoft Word - Armjtag_문서1.doc

Microsoft PowerPoint Android-SDK설치.HelloAndroid(1.0h).pptx

슬라이드 1

Interstage5 SOAP서비스 설정 가이드

슬라이드 1

CD-RW_Advanced.PDF

Contents Activity Define Real s Activity Define Reports UI, and Storyboards Activity Refine System Architecture Activity Defin

문서의 제목 나눔고딕B, 54pt

Smart Power Scope Release Informations.pages

Microsoft Word - src.doc

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

chapter1,2.doc

28 THE ASIAN JOURNAL OF TEX [2] ko.tex [5]

Secure Programming Lecture1 : Introduction

ISP and CodeVisionAVR C Compiler.hwp

Remote UI Guide

지난시간에... 우리는 kernel compile을위하여 cross compile 환경을구축했음. UBUNTU 12.04에서 arm-2009q3를사용하여 간단한 c source를빌드함. 한번은 intel CPU를위한 gcc로, 한번은 ARM CPU를위한 gcc로. AR

<B1D4B0DDBCAD202D20C4DAB5E520B1E2B9DD2E687770>

을풀면된다. 2. JDK 설치 JDK 는 Sun Developer Network 의 Java( 혹은 에서 Download > JavaSE 에서 JDK 6 Update xx 를선택하면설치파일을

Microsoft PowerPoint - AME_InstallRoutine_ver8.ppt

목차 1. 제품 소개 특징 개요 Function table 기능 소개 Copy Compare Copy & Compare Erase

MPLAB C18 C

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

ARMBOOT 1

Windows Server 2012

강의10

1. Windows 설치 (Client 설치 ) 원하는위치에다운받은발송클라이언트압축파일을해제합니다. Step 2. /conf/config.xml 파일수정 conf 폴더에서 config.xml 파일을텍스트에디터를이용하여 Open 합니다. config.xml 파일에서, 아

MAX+plus II Getting Started - 무작정따라하기

기존에 Windchill Program 이 설치된 Home Directory 를 선택해준다. 프로그램설치후설치내역을확인해보면 Adobe Acrobat 6.0 Support 내역을확인할수 있다.

Microsoft PowerPoint - [Practice #1] APM InstalI.ppt

DeepDive_ APT_....

C. KHU-EE xmega Board 에서는 Button 을 2 개만사용하기때문에 GPIO_PUSH_BUTTON_2 과 GPIO_PUSH_BUTTON_3 define 을 Comment 처리 한다. D. AT45DBX 도사용하지않기때문에 Comment 처리한다. E.

슬라이드 1

1) 인증서만들기 ssl]# cat > // 설명 : 발급받은인증서 / 개인키파일을한파일로저장합니다. ( 저장방법 : cat [ 개인키

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

Install stm32cubemx and st-link utility

슬라이드 1

전기설비의 검사˚점검 및 시험등

Chapter 1

1. 안드로이드개발환경설정 안드로이드개발을위해선툴체인을비롯한다양한소프트웨어패키지가필요합니다 툴체인 (Cross-Compiler) 설치 안드로이드 2.2 프로요부터는소스에기본툴체인이 prebuilt 라는이름으로포함되어있지만, 리눅스 나부트로더 (U-boot)

PowerPoint 프레젠테이션

슬라이드 1

표준프레임워크 Nexus 및 CI 환경구축가이드 Version 3.8 Page 1

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

Splentec V-WORM Quick Installation Guide Version: 1.0 Contact Information 올리브텍 주소 : 경기도성남시분당구구미로 11 ( 포인트타운 701호 ) URL: E-M

6. 설치가시작되는동안 USB 드라이버가자동으로로드됩니다. USB 드라이버가성공적으로로드되면 Setup is starting( 설치가시작되는중 )... 화면이표시됩니다. 7. 화면지침에따라 Windows 7 설치를완료합니다. 방법 2: 수정된 Windows 7 ISO

슬라이드 1

CODESYS 런타임 설치과정

메일서버등록제(SPF) 인증기능적용안내서 (HP-UX - postfix) OS Mail Server SPF 적용모듈 (Perl 기반) 작성기준 HP-UX 11.11i postfix spf-filter 년 6 월

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

4. Compass 명령어를알아보자. compass <command> [<option>, <option>, <option>.. <option>] command : 명령어. clean - Remove generated files and the sass cache. com

목차 윈도우드라이버 1. 매뉴얼안내 운영체제 (OS) 환경 윈도우드라이버준비 윈도우드라이버설치 Windows XP/Server 2003 에서설치 Serial 또는 Parallel 포트의경우.

슬라이드 1

untitled

슬라이드 1

리눅스설치가이드 3. 3Rabbitz Book 을리눅스에서설치하기위한절차는다음과같습니다. 설치에대한예시는우분투서버 기준으로진행됩니다. 1. Java Development Kit (JDK) 또는 Java Runtime Environment (JRE) 를설치합니다. 2.

PowerPoint 프레젠테이션

Clover 부트로더를 이용한 해킨토시 설치방법

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

01장

Microsoft Word ARM_ver2_0a.docx

VOL /2 Technical SmartPlant Materials - Document Management SmartPlant Materials에서 기본적인 Document를 관리하고자 할 때 필요한 세팅, 파일 업로드 방법 그리고 Path Type인 Ph

Microsoft PowerPoint 세션.ppt

슬라이드 1

PRO1_02E [읽기 전용]

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

Microsoft PowerPoint - jfeature장범석서재원박동현.pptm

Microsoft PowerPoint - 안드로이드 개발 환경 구축(170411)

Microsoft PowerPoint 통신 및 압축 명령어.ppt

Microsoft Word MetOne237Bmanual

소프트웨어 검증 및 설계

게시판 스팸 실시간 차단 시스템

untitled

1

MF3010 MF Driver Installation Guide

Studuino소프트웨어 설치

Network Security - Wired Sniffing 실습 ICNS Lab. Kyung Hee University

LCD Display

server name>/arcgis/rest/services server name>/<web adaptor name>/rest/services ArcGIS 10.1 for Server System requirements - 지

제목을 입력하세요.

본교재는수업용으로제작된게시물입니다. 영리목적으로사용할경우저작권법제 30 조항에의거법적처벌을받을수있습니다. [ 실습 ] 스위치장비초기화 1. NVRAM 에저장되어있는 'startup-config' 파일이있다면, 삭제를실시한다. SWx>enable SWx#erase sta

Apache Ivy

[ 컴퓨터시스템 ] 3 주차 1 차시. 디렉토리사이의이동 3 주차 1 차시디렉토리사이의이동 학습목표 1. pwd 명령을사용하여현재디렉토리를확인할수있다. 2. cd 명령을사용하여다른디렉토리로이동할수있다. 3. ls 명령을사용하여디렉토리내의파일목록을옵션에따라다양하게확인할수

tiawPlot ac 사용방법

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.


Transcription:

순환복잡도분석 SW 가이드 - 안전성확보를위한순환복잡도관리 - 소프트웨어안전성보증연구센터

제출문 본보고서를대학 ICT 연구센터육성산업 ( 사업기간 :2015. 6.1.~2018. 12. 31) 의 과제인 소프트웨어안전성보증을위한정확성확보체계개발 에대한 2 차년도별첨보고서로제출합니다. 2016. 12. 16. 연구책임자 : 교 수 한혁수 ( 상명대학교컴퓨터과학과 ) 참여연구원 : 연구원 한동준 ( 소프트웨어안전성보증연구센터 ) 학생연구원 김은비 ( 상명대학교컴퓨터과학과 ) 오승원 ( 상명대학교컴퓨터과학과 ) 최이수 ( 상명대학교컴퓨터과학과 )

목 차 제 1 장순환복잡도분석 SW 가이드개요 3 제 1 절도구필요성 3 제 2 절도구개요 3 제 2 장도구설치및기본설정 4 제 1 절사전조건 4 제 2 절도구다운로드및설치 4 제 3 장명령줄실행 5 제1절기본실행방법 5 제2절실행및기본결과확인 6 제3절상세결과확인 8 제 4 장 Jenkins 연동및실행 10 제1절 Jenkins의플러그인설치및설정 10 제2절 Jenkins Job 설정 11 제3절 Jenkins 실행결과확인 12-2 -

제 1 절도구필요성 제 1 장순환복잡도분석 SW 가이드개요 안전성이중요시되는소프트웨어는소스코드로직상에서이상을발생시킬수있는원인을최대한제거하고, 테스트시 Line, Branch, MC/DC 커버리지를최대로달성해야함 이를위해서는소스코드의순환복잡도가낮아야하며, ISO 26262 등안전성관련국제표준에서도요건으로서낮은순환복잡도를제시하고있음 높은순환복잡도는소스코드에대한테스트를어렵게만들고, 개발자의이해도를떨어뜨려결과적으로기능안전성을저해함 NSIQCollector는프로그래밍언어와무관하게함수 / 메소드단위의순환복잡도를분석하고결과를표현함 제 2 절도구개요 NSIQCollector는 NHN에서개발한오픈소스분석도구로써, CodeAnalyzerPro를내부적으로호출하고, 그결과를표시함 명령줄에서실행가능하며, Jenkins 플러그인을통해 Jenkins 빌드시분석하고결과및추세를그래프로표시함 NSIQCollector가제공하는기능은다음과같음 지정한디렉토리하위에있는코드를대상으로한번의명령어실행으로다양한언어에대해 LOC 정보와복잡도정보추출 지정한디렉토리중필요없는하위디렉토리내의코드정보를필터링가능 초기파일리스트를지정하여, 변경 / 신규생성된코드만측정수행가능 Windows / Linux 지원 CSV / HTML / EXCEL / XML 로분석결과출력 NSIQCollector를이용하여소스코드에서추출가능한정보는다음과같음 소스코드파일개수 (C/C++, Java, JSP, PHP, Javascript, HTML 코드파일대상 ) 소스코드총 LOC (Lines of Code) 소스코드의코드 LOC ( 커멘트로만구성된라인과빈줄을제거한나머지줄수 ) 총함수의개수 (C/C++, Java 코드파일대상 ) 각함수의총 LOC / 코드 LOC / Cyclomatic Complexity 총함수중 Cyclomatic Complexity가 10 이상인함수개수및비율 총함수중 Cyclomatic Complexity가 30 이상인함수개수및비율 - 3 -

제 2 장도구설치및기본설정 제 1 절사전조건 본도구를실행하기에앞서 Java 가설치되고, 실행설정이되어있어야함 Java 는 1.5 버전이상이설치되어야함. Java 관련다음항목이설정되어야함 1. 시스템환경변수 JAVA_HOME: Java 설치폴더 2. Path Java bin 폴더 제 2 절도구다운로드및설치 NSIQCollector 는공식페이지에서관련정보및다운로드링크를확인할수있음 공식페이지 URL 은다음과같으며, 네이버개발자센터내에위치함 http://dev.naver.com/projects/nsiqcollector 최신버전은 2.1.4이며, Windows 용과 Linux 용으로구분하여제공함 다운로드가완료되면별도의설치과정없이압축해제하고사용가능하며, 소스코드가위치한폴더에서실행하려면실행파일인 nsiqcollector.exe가위치한폴더를시스템 path에등록하는것이좋음 실행파일폴더의예 ) C:\nsiqcollector - 4 -

제 3 장명령줄실행 제 1 절기본실행방법 NSIQCollector 의실행방법과옵션을확인하는방법은실행파일에 h 옵션을함 께실행하는것임 NSIQCollector 에서제공하는기본실행옵션은다음과같음 nsiqcollector -h Usage : nsiqcollector [-c complexityresultfile] [-l locresultfile] [-f filefilterlcoation] [-d] [-i] [-g] [--html --csv] [--force-lang=languagename:extension,[languagename:extension]] targetdirectory.. [Example] nsiqcollector. nsiqcollector -g. nsiqcollector --html target nsiqcollector -c comresult.html -l locresult.html --html target target2 nsiqcollector --force-lang=jsp/php:xml target [Options] -c Assign complexity anlysis result file location (optional when 1 target is provided) -l Assign loc analysis result file location. (optional when 1 target is provided) --html Output HTML format (default) --csv Output HTML format (if not provided, the default output type(html) is used) -g Generate the basefilelist.txt file. This file contains the current source file name and size, so that it can be used to get the file information which is modified. -i CI(Continuous integration) mode. it excludes '\\target\' directory, doesn't make filefilter.txt even when it's not available, and print analysis starting and end time. -f filefilter location -d Leave the temporary files for debugging purpose. -v Show detail ouput(verbose mode) --force-lang=languagename:extension,[languagename:extension]... Add file extensions to be counted as assigned languages. -s Assign Filter scope name to be applied in this analysis -m MODULENAME Assign Ouput Module to enable custom ouput - 5 -

NSIQCollector 를실행하는가장쉬운방법은명령어와분석대상폴더를지정하 는것으로예제는다음과같음 nsiqcollector 분석대상폴더 만약현재폴더를분석함이면실행방법은다음과같음 nsiqcollector. 분석결과는기본적으로순환복잡도와 LOC 로구분하여 html 파일로저장됨 그러나 CSV 또는 EXCEL 로출력하려면다음의옵션을붙일수있음 --csv / --excel 제 2 절실행및기본결과확인 앞절에서실행방법은살펴보았으며, NSIQCollectr의소스코드에서 Trunk 폴더를대상으로분석을실행하고자함 실행방법은 trunk의상위폴더에서 trunk 폴더를대상으로실행했음. 실행명령은다음과같음 nsiqcollector trunk 위의명령을실행하면화면에다음과같은내용이출력됨 ============================ Analyzing nsiqcollector =============================== Filter Scope "default" is applied. Current Filter Setting (Following is applied sequentially) \.cvs\ is excluded \.svn\ is excluded Current File extension and Language Settings JSP/PHP=tpl,nhn,NHN,jsp,php, C/C++=cpp,cxx,c,h,hxx,hpp, Html=htm,html, Java=java, JavaScript/ActionScript=as,js, - 6 -

============================= Summary Report ============================== Product LOC - only apply filefilter.txt ** Total File Count : 84 ** Total LOC : 9109 ** Total Code LOC : 6669 Delta LOC - apply both filefilter.txt and basefilelist.txt ** Total File Count : 84 ** Total LOC : 9109 ** Total Code LOC : 6669 Delta Complexity - apply both filefilter.txt and basefilelist.txt ** Total Delta Function Count : 480 ** Delta Over 10 Complexity Function Rate: 14 (2.92%) ** Delta Over 30 Complexity Function Rate: 3 (0.63%) LOC Distribution Per Lang Lang Java C/C++ Html JSP/PHP JavaScript... Product File Count 70 3 3 4 4 LOC 6353 500 1471 174 611 Code LOC 4724 381 1068 153 343 Delta File Count 70 3 3 4 4 LOC 6353 500 1471 174 611 Code LOC 4724 381 1068 153 343 Loc analysis report is saved in nsiqcollector\loc_result.html Complexity analysis report is saved in nsiqcollector\complexity_result.html 이실행결과로 2 개의 html 문서에전체결과가출력되며, 명령줄에서는전반적 인결과가표시됨 위의결과는다음과같은내용을포함하고있음 전체분석대상파일 : 84 개 - 7 -

전체 LOC: 9109 코드 LOC: 6669 총함수수 : 480개 순환복잡도 10 이상함수 : 14개 ( 전체함수의 2.92%) 순환복잡도 30 이상함수 : 3개 ( 전체함수의 0.63%) 분석대상폴더의 loc_result.html 와 complexity_result.html 에 LOC와순환복잡도상세분석결과를저장 제 3 절상세결과확인 1. loc_result.html 결과확인 상세결과중, loc_result.html 은다음과같이결과가표시됨 예제는앞절과동일한 NSIQCollector 소스코드임 ( 그림 1) NSIQCollector 소스코드 - 8 -

위결과는다음의내용을포함하고있음 분석일시 전체 LOC 정보 각파일별전체 LOC 정보 각파일별코드 LOC 정보 2. complexity_result.html 결과확인 complexity_result.html 은다음과같이결과가표시됨 ( 그림 2) complexity_result.html 위결과는다음의내용을포함하고있음 분석일시 전체순환복잡도정보 각함수별전체 / 코드 LOC 정보 각함수별순환복잡도정보 - 9 -

제 4 장 Jenkins 연동및실행 NSIQCollector 는명령줄실행으로도순환복잡도에대한정보를제공하지만, Jenkins 와연동하여실행하면각빌드별추세, 상위폴더부터하위폴더로의 Deep Dive 분석이가능함 제 1 절 Jenkins 의플러그인설치및설정 Jenkins에서 NSIQCollector를실행하기위해서는 Jenkins가설치된서버에 NSIQCollector가설치되고기본설정이완료되어야함 Jenkins의 NSIQCollector 플러그인은 [Jenkins 관리 ]-[ 플러그인관리 ] 에서설치할수있으며, Jenkins의 NSIQCollector 플러그인정보는다음과같음 ( 그림 3) Jenkins 의 NSIQCollector 플러그인정보 - 10 -

설치가완료되면 [Jenkins 관리 ] - [ 시스템설정 ] 에 NSIQCollector 관련항목이생성되며, 다음과같이실행위치를실행파일명까지포함하여지정해줘야함 NSIQCollector가설치된위치가 C:\dev_tools\nsiqcollector\nsiqcollector.exe 라면설정은다음과같음 제 2 절 Jenkins Job 설정 Jenkins 에서 Job 을설정할때, NSIQCollector 실행여부 / 대상폴더와결과표시를 지정해야함. NSIQCollector 실행여부및대상폴더설정은다음과같음 ( 그림 4) NSIQCollector 실행여부및대상폴더설정 설정에. 인이유는, 체크아웃한폴더를대상으로분석하겠다는의미임 특정폴더를지정하려면, 해당폴더명을입력하면됨 NSIQCollector 결과표시지정은다음과같으며, 결과표시여부는 빌드후조치 에서추가할수있음 ( 그림 5) 빌드후조치 - 11 -

제 3 절 Jenkins 실행결과확인 NSIQCollector를 Jenkins에서실행하면다음과같이실행결과가표시됨 다만, Jenkins에서실행하면 NSIQCollector의기본설정외에, html 등의파일도분석하므로 loc의차이가남이부분은 NSIQCollector의설정파일을조정함으로써해결가능함 Job의메인화면에는다음과같이표시됨 ( 그림 6) Job 의메인화면 Main 화면에표시되는항목은다음과같음 일별 LOC 추세그래프 마지막빌드의파일별 LOC 그래프 순환복잡도추세그래프 각빌드에서는 Complexity Breakdown by Directory 표가추가로표시됨이표는분석대상의최상위폴더가표시되며, 각폴더를클릭하면하위폴더로이동하며결과를표시함 각폴더내의파일을클릭하면폴더에속한메서드 / 함수의순환복잡도와 LOC 정보를확인할수있음기준순환복잡도인 10, 30 이상인메서드 / 함수가포함되면각각노란색, 빨간색으로강조되어기준이상의항목을쉽게확인할수있음 - 12 -

( 그림 7) 폴더에속한메서드 / 함수의순환복잡도와 LOC 정보 파일을선택하여소속메서드 / 함수의결과를확인하면다음과같음 ( 그림 8) 파일의소속메서드 / 함수의결과 - 13 -