1. Eclipse 2. JUnit 3. STATIC ANALYSIS 4. PMD 5. Eclipse TPTP 6. FIND BUGS INDEX 2

Similar documents
슬라이드 1

PowerPoint 프레젠테이션

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

PowerPoint Presentation

슬라이드 1

슬라이드 1

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

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

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

파워포인트

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

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

소프트웨어 검증 및 설계

JDK이클립스

슬라이드 1

(Microsoft PowerPoint - AndroG3\306\367\306\303\(ICB\).pptx)

슬라이드 1

슬라이드 1

서현수

문서의 제목 나눔명조R, 40pt

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

PowerPoint 프레젠테이션

Install stm32cubemx and st-link utility

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

Angry MOMO Presentation

Interstage5 SOAP서비스 설정 가이드

1. 도구개요 CppUnit Testing 소개 CppUnit 는 C++ 용 testing Framework 로 Java 의 JUnit 을 C++ 로구현 C++ 언어에서사용할수있도록개발된 Open Source 프로젝트로, source code 의특정 Module 이의도

Microsoft PowerPoint - CSharp-10-예외처리

JAVA PROGRAMMING 실습 08.다형성

슬라이드 1

<4D F736F F F696E74202D203137C0E55FBFACBDC0B9AEC1A6BCD6B7E7BCC72E707074>

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

쉽게 풀어쓴 C 프로그래밍

Facebook API

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

Spring Boot

JUNIT 실습및발표

2. 기능요약 정해진규칙에따라소스코드를검사해주고이에대한결과를 report 하게함으로서코딩효율을높여주는도구 주요기능 지원내용 소스코드검사범위 프로젝트 대상언어 Java, JavaScript, XML, XSL, JSP 코드위배사항발견지원 ( 코딩스타일및사용되지않는코드 )

Chapter 1

슬라이드 1

JVM 메모리구조

Secure Programming Lecture1 : Introduction

Network Programming

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

PowerPoint Presentation

Spring Boot/JDBC JdbcTemplate/CRUD 예제

ISP and CodeVisionAVR C Compiler.hwp

MVVM 패턴의 이해

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

PowerPoint Template

Microsoft Word - [2017SMA][T8]OOPT_Stage_2040 ver2.docx

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

슬라이드 1

Design Issues

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

Studuino소프트웨어 설치

gnu-lee-oop-kor-lec06-3-chap7

슬라이드 1

Windows 8에서 BioStar 1 설치하기

Introduction to CTIP

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint App Fundamentals[Part1].pptx

Contents Contents 2 1 Abstract 3 2 Infer Checkers Eradicate Infer....

PowerPoint Presentation

1. 도구개요 STAF Testing 소개 각테스트대상분산환경에데몬을사용하여테스트대상프로그램을통해테스트를수행하고, 통합하며자동화하는 프레임워크 주요기능 테스트통합및자동화 카테고리 Testing 세부카테고리테스트설계및실행 커버리지 Test Integration / Aut

PowerPoint 프레젠테이션

PowerPoint Presentation

PowerPoint Presentation

슬라이드 1

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

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

JUnit & Eclipse

<B1D4B0DDBCAD202D20C4DAB5E520B1E2B9DD2E687770>

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

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

PowerPoint Presentation

Microsoft Word - Armjtag_문서1.doc

오버라이딩 (Overriding)

12 성능모니터링 allmon Apache License v 성능모니터링 nmon GPL v3 분산되어있는시스템에대한자원상태체크, 사용현황, 성능등을수집

Microsoft PowerPoint - Chapter_03-1_DevEnv.pptx

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

슬라이드 1

슬라이드 1

C# Programming Guide - Types

Google Maps Android API v2

컴퓨터과학과 교육목표 컴퓨터과학과의 컴퓨터과학 프로그램은 해당분야 에서 학문적 기술을 창의적으로 연구하고 산업적 기술을 주도적으로 개발하는 우수한 인력을 양성 함과 동시에 직업적 도덕적 책임의식을 갖는 IT인 육성을 교육목표로 한다. 1. 전공 기본 지식을 체계적으로

윈도우시스템프로그래밍

Apache Ivy

Ver. 4.0 OOPT Stage 1000 <Plan and Elaboration> Version 4.0 Project Team T7 Team Date Team Information 오세욱 임현유

PowerPoint 프레젠테이션

PowerPoint Presentation

교육2 ? 그림

JAVA PROGRAMMING 실습 05. 객체의 활용

PowerPoint 프레젠테이션

쉽게

02 C h a p t e r Java

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

PathEye 공식 블로그 다운로드 받으세요!! 지속적으로 업그래이드 됩니다. 여러분의 의견을 주시면 개발에 반영하겠 습니다.

17장 클래스와 메소드

[Brochure] KOR_TunA

Transcription:

2014 소프트웨어검증 Eclipse, JUnit, 정적분석도구 T1 200911381 김진현 200911417 정명권 200911418 정세진

1. Eclipse 2. JUnit 3. STATIC ANALYSIS 4. PMD 5. Eclipse TPTP 6. FIND BUGS INDEX 2

IDE ECLIPSE 3

Eclipse v Ide 의한종류 v 주로 jdk 를설치하여 java 코드작성에이용 v c/c++, android 등의다양한언어지원 4

Eclipse - 설치 v http://eclipse.org 에서다운로드 v Os 선택후, 맞는버전에따라서다운로드후압축해제 5

Eclipse v Jdk 설치 v http://oracle.com 에서 downloads -> java for developer 항목에서 jdk 다운로드후설치 6

Eclipse v 제어판 \ 시스템및보안 \ 시스템 \ 고급시스템설정에서 jdk 설치된위치로환경변수설정 7

Eclipse - 사용법 v 프로젝트생성 v File -> new -> Java project v 같은방식으로 package, class 등생성가능 8

Eclipse v 실행 v 상단의화살표모양의버튼을누르고실행시킬프로젝트선택 v 마우스오른쪽버튼누르고 run as 선택 9

Eclipse v 디버깅 v 상단의벌레모양의버튼을누르고실행시킬프로젝트선택 v 마우스오른쪽버튼누르고 debug as 선택 10

Eclipse 라이브러리사용 v 외부라이브러리사용 v Eclipse 에서 project 에 jar 형태의외부라이브러리를추가하여사용가능 v 프로젝트이름에마우스오른쪽클릭 - > buildpath -> configuration build path 에서관리 11

Eclipse REF 1 12

Eclipse - 플러그인 v 플러그인 v 시스템에기능을추가하는코드 / 데이터의구조화된묶음 v 추가되는기능은코드라이브러리, 플랫폼확장, 문서등의형태로제공 v Help->install new software 메뉴에서 url 을이용하여설치 v Help->eclipse marketplace 에서검색을통해 plugin 을찾아서설치가능 v 대표적인예로는 subclipse(svn), ast view, android sdk 등이있다 13

Eclipse 14

자바를위한단위테스트작성프레임워크 JUNIT 15

JUnit v JUnit Java Unit Test 작성을위한산업표준프레임워크 v Unit Test 프로그램을작은단위로쪼개고각단위가제대로동작하는지검증하는것 문제가발생시그원인이되는단위를빠르게찾고해결할수있음 16

JUnit v 동작환경구성 Eclipse 설치 ( JUnit 은기본적으로포함되어있음 ) 테스트를수행할프로젝트의 Library 에 JUnit 를추가 테스트클래스를생성하고테스트코드를작성 17

JUnit v 테스트코드작성 테스트클래스를생성 단위테스트메소드를생성 메소드내부에서테스트대상클래스의인스턴스를선언 인자값을설정하고메소드를실행시켜결과를가져옴 JUnit 프레임워크에포함된 Assert 메소드들을이용하여결과를확인 18

JUnit v JUnit Assert 주요메소드 assertarrayequals(a, b) : 배열의값이일치하는지확인 assertequals(a, b) : 객체 a 와 b 가일치하는지확인 asserttrue(a) : a 가참인지확인 assertnotnull(a) : a 가 Null 이아닌지확인 etc : http://junit.sourceforge.net/javadoc/org/junit/assert.html 19

JUnit v 결과확인 문제가되는단위만확인하여빠른오류해결이가능 한번테스트케이스작성후지속적으로 활용이가능 오류발생시목표값과실제값을비교하여그원인을쉽게파악할수있음 테스트코드작성시 gui 와연관된부분에대해서 테스트케이스작성이쉽지않음 20

Introduce Static Analysis STATIC ANALYSIS 21

Static Analysis v What is the Static Analysis? 컴퓨터소프트웨어를분석하는방법중하나로서프로그램을실제로 실행해보지않고분석하는방법이다. 여러정적분석도구들을사용하여치명적일수있는오류들을미리 검출한다. 프로그램내부의논리적오류를찾아내는데도움을줄수있다. 22

Static Analysis v Benefit of Static Analysis 테스트를실행하기전에조기결함을발견할수있어시간낭비를줄일수있다. 코드와설계의의심스러운부분을조기에발견할수있다. 동적분석으로는발견하기어려운결함을발견할수있다. 소프트웨어모델상의의존도와불일치성을발견할수있다. 코드와설계에있어서유지보수성을향상시킬수있다. 잠재적인치명적결함을예방할수있다. 23

Static Analysis v Defects found through Static Analysis 정의되지않은값으로변수참조 모듈과컴포넌트간에일관되지않은인터페이스 사용되지않는변수나코드 코딩표준위반 보안의취약성 코드와모델의 syntax 위반 24

Static Analysis v Example of Static Analysis Tools Eclipse TPTP PMD Findbugs etc... 25

Static Analysis Tool for Source code PMD 26

PMD v Source code 를분석하는정적분석도구 v 코드의중복성을체크하는 cpd 를내포하고있음 v Unused variables, empty catch block, unnecessary object creation 등여러 programming flaw 를분석한다 v 지원언어로는 java, javascript, xml, xsl 등이있다 27

PMD - 설치법 v http://pmd.sourceforge.net/ - pmd 의 source code 및 release 버전다운로드주소 v Plugin 설치 다양한 IDE 지원 28

PMD - 사용법 v 정해진규칙 ( 룰 ) 기반의정적분석도구 v 정해진규칙을위반여부를체크 v 룰의 priorty 설정및 priority 확인이가능 v 기존에정의된룰을사용할수도있고 Xml 기반의 XPath 방법과 javaruleset 을상속받아서 java 로사용자정의규칙생성가능 v Windows -> preference-> pmd 에서룰의추가, 삭제및수정이가능 29

PMD v Windows -> preference-> pmd 에서룰의추가, 삭제및수정이가능 30

PMD v Windows -> preference-> pmd 에서룰의추가, 삭제및수정이가능 31

PMD v Windows -> preference-> pmd 에서룰의추가, 삭제및수정이가능 32

PMD v Windows -> preference-> pmd 에서룰의추가, 삭제및수정이가능 33

PMD v Windows -> preference-> pmd 에서룰의추가, 삭제및수정이가능 34

PMD v Windows -> preference-> pmd 에서룰의추가, 삭제및수정이가능 35

PMD v CPD 를통해중복코드를확인가능 v 검사하는최소 tile size 를지정 (tile = token) 36

PMD v 다양한 format 의 reports 기능을제공 37

PMD v 미리정의된 rule Naming Rule 짧은변수, 메소드이름사용 Code Size Rule Toomanyfields 같이구조화하지않고코드사이즈만증가시키는룰 Optimization Rule 최적화를위한룰 등이외에도많은룰셋이존재 각룰셋에는수십가지의세부 rule 들이존재 unreachable code 도검사가능 38

PMD v 적용할규칙과적용하지않을규칙선택해서세팅할수있다 v Project-> properties->pmd 39

PMD v 실행화면 40

PMD v 기본적인형태의 txt 형식의리포트 41

PMD v pmd v 유저가규칙을설정가능하므로프로젝트진행시팀에서정한네이밍룰, 코드스타일들을적용하여사용할수있다 v 공용적으로통용되는코드스타일들을적용하여코딩스타일형성에도움 v Command line 으로실행과 ant script 로의실행을지원해서 ant script 작성후컴파일시자동으로 pmd 가수행되도록만들수있다 v 하지만새규칙생성시에코드로구성되어쉽게작성하기가어렵다 42

PMD v Pmd ant script 예시 43

프로파일링을통한분석도구 ECLIPSE TPTP 44

Eclipse TPTP v Eclipse TPTP Eclipse Test & Performance Tool Platform Project 모니터링, 테스트자동화, 프로파일링등문제점을찾고해결하는기능을제공 이클립스플러그인으로제공되기때문에설치및분석이간편 정적분석을통한지속적인모니터링방식 v 설치방법 참고 : http://www.eclipse.org/tptp/home/downloads/ 45

Eclipse TPTP v 실행및분석 플러그인이정상적으로설치되면이클립스에서관련메뉴가생성 분석대상클래스를 Profile As 로실행하여분석시작 46

Eclipse TPTP v 객체사용현황분석 현재활성화된객체와총생성된객체, 그크기등의정보를알수있음 App 동작에따라서지속적인모니터링가능 어떤객체가더이상사용되지않을시점에활성화된객체가남아있을경우메모리누수가발생했음을알수있음 메모리누수발생객체는객체참조그래프를통해추가분석이필요 47

Eclipse TPTP v 객체참조그래프 특정객체가참조되는과정을그래프로표현 누수되는객체을참조하는클래스를발견할수있음 누락된메소드나논리적오류를발견할수있음 remove 가실행되지않음 48

Eclipse TPTP v 수행시간관련분석 어플리케이션의수행시간, 호출횟수등의정보도알수있음 특정 method 에서만수행시간이지연될경우문제점이존재한다고생각할수있음 49

Eclipse TPTP v 분석수행결과를 3 가지의형태로리포트도출이가능 50

Eclipse TPTP v 정확한문제발생지점을확인하기위해선지속적인모니터링이필요 v 코드가완전히동작가능한상태에서만분석및테스트가가능 51

Introduce Findbugs FINDBUGS 52

Findbugs v What is the Findbugs? 자바코드에대한정적분석툴 소스코드에서잠재적으로버그가발생할수있는부분에대한경고를출력한다. 컴파일된코드단계에서실시된다. 프로젝트 or 클래스단위로체크가가능하다. 코드의건전성이아닌버그의가능성에대해서검출한다. 53

Findbugs v How to install for Eclipse Eclipse Marketplace 에서 Findbugs 를검색하여다운받아 설치한다. 54

Findbugs v How to use 검사하고자하는프로젝트또는클래스우클릭 -> Find Bugs Team 부귀영화 55

Findbugs v Result and Debugging Windows -> Open Perspective -> Other -> Findbugs 발생가능한버그들의목록과원인 해당버그의상세정보와심각도및해결방안제시 Team 부귀영화 56

Findbugs v Benefit of Findbugs IDE 와밀접히통합되어있어언제든쉽게적용할수있다. 무료이다 (Open Source). 강력하고정확하다. 정적분석도구의한계인가능성만을제시 57

REFERENCES 1. JUnit, http://using.tistory.com/54 2. 유닛테스트, http://ko.wikipedia.org/wiki/ 유닛테스트 3. Eclipse TPTP, http://www.eclipse.org/tptp/home/ 4. Eclipse TPTP 예제, http://javacan.tistory.com/entry/125 5. http://pmd.sourceforge.net/ 58

Q & A E N D 59