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

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

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

슬라이드 1

슬라이드 1

슬라이드 1

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

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

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

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

슬라이드 1

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

슬라이드 1

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

PowerPoint Presentation

슬라이드 1

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

Studuino소프트웨어 설치

Ch.8 Procedures and Environments

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

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

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

슬라이드 1

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

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

1. 도구개요 JUnit Testing 소개 JUnit 은 Java 기반테스팅을위한프레임워크로, 단위모듈 (ex: Method) 이정확히구현되었는지를확인할수있는도구 주요기능 Test case 생성및실행, 오류추적 카테고리 Testing 세부카테고리테스트설계및실행 커버리

2. 기능요약 웹기반의서비스로써, 손쉬운일정관리및프로젝트관리를지원하는도구 주요기능일정관리그룹관리다중프로젝트관리체크리스트투표기능첨부파일 지원내용지원지원지원지원지원지원 1

2. 기능요약 자바프로그래밍언어에서사용하는자동화된소프트웨어빌드도구 주요기능 IDE 통합및도구지원 원격코드 Build 자동화 지원여부 대부분의도구지원 (Eclipse, NetBeans 등 ) 지원 (FTP, SCP, SFTP, SVN) 자동화 Build 중 Unit Te

1. 도구개요 Implementation Eclipse CDT 소개 CDT(C/C++ Development Toolkit) 는 Eclipse plug-in 중하나로 C/C++ 개발을위한통합개발환경 (IDE : Integrated Development Environmen

02 C h a p t e r Java

슬라이드 1

!K_InDesginCS_NFH

12-file.key

<4D F736F F D D31312D30312D53572D30312DBBE7BFEBC0DABCB3B8EDBCAD5FBFDCBACEB9E8C6F7BFEB2E646F63>

PowerPoint 프레젠테이션

슬라이드 1

1. 도구개요 Configuration & Version Management CVS 소개 버전컨트롤시스템으로소스코드나기타리소스의히스토리를쉽게관리할수있도록도와주는도구 주요기능 버전관리, 변경관리, 소스관리 카테고리 Configuration & Version Managem

슬라이드 1

PowerPoint Presentation

Microsoft Word - src.doc

PowerPoint 프레젠테이션

ISP and CodeVisionAVR C Compiler.hwp

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

1. 도구개요 FitNesses Testing 소개 자동화된테스팅을위한프레임워크인 Fit (Framework for Integrated Tests) 을기반으로하여테스트를수행하고, Fit 의테이블구조를통한웹상에서테스트결과를관리하고보고 주요기능 컴파일된파일 (.Class)

NTD36HD Manual

PowerPoint Presentation

Windows 8에서 BioStar 1 설치하기

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

슬라이드 1

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

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

2. 기능요약 는 Java 의 Coverage 를측정하기위한도구 EclEmma 는 의기능을 Eclipse 에서사용할수있도록구현된 Plug-in 주요기능 지원내용 Code coverage 분석 지원 단위별 Coverage 분석 지원 Source highlighting 기

B.3 JDBC 설치 JDBC Java DataBase Connectivity 는자바에서 DBMS의종류에상관없이일관된방법으로 SQL을수행할수있도록해주는자바 API Application Program Interface 다. 이책에서는톰캣과 SQL Server 간의연결을위

슬라이드 1

로거 자료실

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

Facebook API

JDK이클립스

소프트웨어 검증 및 설계

adfasdfasfdasfasfadf

Visual Basic 반복문

1. 도구개요 HttpUnit Testing 소개 주요기능 HTTP서버와자바프로그램을통해상호작용을할수있는오픈소스기반의자바라이브러리. HttpUnit 은자바프로그램에서브라우저없이직접서버에접근. HttpUnit 은 HTML서버들의상호작용에대한 API를제공하여 JUnit 또

PowerPoint Presentation

서현수

1. SNS Topic 생성여기를클릭하여펼치기... Create Topic 실행 Topic Name, Display name 입력후 Create topic * Topic name : 특수문자는 hyphens( - ), underscores( _ ) 만허용한다. Topi

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

Microsoft PowerPoint - CSharp-10-예외처리

Chapter 1

PowerPoint Presentation

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

PowerPoint 프레젠테이션

<4D F736F F F696E74202D C61645FB3EDB8AEC7D5BCBA20B9D720C5F8BBE7BFEBB9FD2E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

Interstage5 SOAP서비스 설정 가이드

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

ICAS CADWorx SPLM License 평가판설치가이드

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

PowerPoint Presentation

Microsoft PowerPoint - chap01-C언어개요.pptx

JUNIT 실습및발표

JVM 메모리구조

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

초보자를 위한 C++

1. 도구개요 Requirement Analysis & Management JFeature 소개 요구사항들을기록하고이들을 JUnit Test Case 와매치함으로써프로세스를단순화할수있다 주요기능 요구사항기록, Report 생성하기 카테고리 Requirement Anal

2. 기능요약 Parallel 빌드지원등빌드자동화기능을지원하며다양한도구 ( 형상관리도구, Issue Tracker, Test 도구, IDE) 와의연동을지원함. 주요기능 Parallel 빌드지원 ( 다수프로젝트동시빌드 ) 분산빌드웹기반관리 알림형상관리도구지원

Contents. 1. PMD ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 2. Metrics ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 3. FindBugs ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ 4. ㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍㆍ

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

CODESYS 런타임 설치과정

PowerPoint 프레젠테이션

1

2. 기능요약 요구사항들을기록하고이들을 JUnit Test Case 와매치함으로써프로세스를단순화 주요기능단위테스트프로그래밍언어지원시스템테스트 GUI / Console 파라미터가있는메소드의테스트 TDD 지원여부지원 F#, C#, C++ 등닷넷환경지원모두지원 2.5버전이상

윈도우시스템프로그래밍

< 목차 > Ⅰ. 개요 3 Ⅱ. 실시간스팸차단리스트 (RBL) ( 간편설정 ) 4 1. 메일서버 (Exchange Server 2007) 설정변경 4 2. 스팸차단테스트 10

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

Secure Programming Lecture1 : Introduction

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

Microsoft PowerPoint 웹 연동 기술.pptx

슬라이드 1

MF3010 MF Driver Installation Guide

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

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

Transcription:

1. 도구개요 소개 정해진규칙에따라소스코드를검사해주고이에대한결과를 report 하게함으로서코딩효율을높여주는도구 주요기능 Code Check, Reporting 카테고리 세부카테고리정적분석 커버리지 Java, JavaScript, JSP, XML, XSL 도구난이도하 라이선스형태 / 비용 BSD-style / 무료사전설치도구 JDK, Eclipse 운영체제 Windows, Linux, Mac OS X, UNIX 도구버전 5.0.0 (2010. 10) 특징 작성한코드에대한위반사항 ( 위반되는코딩스타일, 불필요한코드 ) 를찾음 위반사항을명시한 report 파일 (pmd.xml, cpd.xml file) 에대한수정이쉬움 한번의클릭으로수많은규칙에대한수정이가능 적용회사 / 프로젝트 관련도구 제작사 공식홈페이지 Eclipse Metrics, Checkclipse, Checkstyle, CAP, FindBugs, Jamit, Simian maven http://pmd.sourceforge.net/ 1

2. 기능요약 정해진규칙에따라소스코드를검사해주고이에대한결과를 report 하게함으로서코딩효율을높여주는도구 주요기능 지원내용 소스코드검사범위 프로젝트 대상언어 Java, JavaScript, XML, XSL, JSP 코드위배사항발견지원 ( 코딩스타일및사용되지않는코드 ) 결과파일보고 지원 중복코드검사 지원 우선순위시각화지원 (5 단계 ) 규칙설정 지원 ( 사용자정의설정 / 기본설정 ) 1

3. 도구실행환경 JAVA 를지원하는 IDE 상에서설치및구현이가능 다양한 OS 를지원 Windows : Windows XP / Windows 7 (32, 64-bit 모두지원 ) Linux : 32, 64-bit 지원 Mac OS X : 32, 64-bit 지원 UNIX : 32, 64-bit 지원 JDK, 자바기반도구 (IDE 등 ) 이필요 코드및플러그인형태 ( 여러 JAVA IDE 에최적화된형태 ), 도구에포함되어있는형태로제공 (Eclipse Plug-in 형태 ) Java IDE (Eclipse, NetBeans 등 ) JDK (Java development kit) Windows / Linux / Mac OS / UNIX 1

4. 도구설치방법 세부목차 4.1 다운및설치하기 4.2 설치확인하기 1

4. 도구설치방법 4.1 다운및설치하기 (1/2) http://pmd.sourceforge.net/ 에서 다운 홈페이지에서 Download 클릭 2

4. 도구설치방법 4.1 다운및설치하기 (2/2) 압축을풀고, 5.0.0 을 Eclipse 가설치된폴더내의 plugins 폴더에복사 압축해제 plugins 폴더에복사 Eclipse ( 재 ) 실행 3

4. 도구설치방법 4.2 설치확인하기 설치확인하기 프로젝트폴더선택후마우스우클릭팝업메뉴에 를확인 4

5. 도구기능소개 세부목차 5.1 의주요기능 5.2 예제소개 5.3 를이용한코드검사하기 5.4 CPD를이용한중복코드검사하기 5.5 검사결과 Reporting하기 1

5. 도구기능소개 5.1 의주요기능 의주요기능 : 소스코드검사 / CPD 적용 / 보고서작성 프로젝트의코드를 Rule 에따라적절하게구현되어있는지확인 : 규칙기반 source code 검사 중복코드의검색 - CPD(Copy/Paste Detector) : Project properties 와 CPD 를이용하여 check 한결과를 report 로작성 [check 결과 reporting] [ 를이용한 code check] [CPD 를이용한중복체크 ] 2

5. 도구기능소개 5.2 예제소개 의기능을설명하기위한예제 : 퀵정렬 (Quick Sort) 퀵정렬예제는분할알고리즘을이용하여구현 정렬알고리즘중가장우수한평균수행속도를자랑 분할알고리즘 (Partition Algorithm) 은퀵정렬의기본개념» 분할알고리즘을기본으로사용하여정렬하고자하는배열을 2 개의하위배열로분할하고각각의하위배열에서는다시재귀적으로자신의배열을분할하여결국배열을정렬하는알고리즘» 멀리떨어짂자료를직접적으로치환함으로써정렬의수행속도를개선 퀵정렬의요구사항 배열을 2 개의하위배열즉, 왼쪽하위배열은피봇값보다작거나같은값으로이루어진배열, 그리고오른쪽하위배열은피봇값보다큰값으로이루어진배열 왼쪽하위배열에퀵정렬을다시실행 오른쪽하위배열에퀵정렬을다시실행 이과정을계속해서진행하되서로의자리값이엇갈리면피봇값과왼쪽에서찾은값을바꿈 3

5. 도구기능소개 5.3 를이용한코드검사하기 (1/9) 프로젝트생성 : QuickSort File New Project Java Project QuickSort 입력 Next 4

5. 도구기능소개 5.3 를이용한코드검사하기 (2/9) Quicksortmodel 패키지를생성 프로젝트선택후마우스우클릭 New Package quicksortmodel 입력 Finish 5

5. 도구기능소개 5.3 를이용한코드검사하기 (3/9) Quicksortmodel 패키지에클래스생성 Quicksortmodel 패키지마우스우클릭 New Class Partition 입력 6

5. 도구기능소개 5.3 를이용한코드검사하기 (4/9) Partition 클래스에테스트할 quicksort 코드작성 7

5. 도구기능소개 5.3 를이용한코드검사하기 (5/9) 기능및 Rule 에대한환경설정 QuickSort 프로젝트선택 Project Properties 8

5. 도구기능소개 5.3 를이용한코드검사하기 (6/9) 테스트하고자하는프로젝트에대해 를실행 프로젝트마우스우클릭 Check Code With 9

5. 도구기능소개 5.3 를이용한코드검사하기 (7/9) 코드검사의결과 Violations Outline : 검사결과에대한에러메시지와에러가발생한해당라인을보임 Violations Overview : 검사결과에대한 overview 를보임 10

5. 도구기능소개 5.3 를이용한코드검사하기 (8/9) Violations Overview Element : 우선순위에따른위반사항 #Violation : 위배된 code 수 #Violation/LOC : 위치에따른위배된 code 수 #Violation/Method : Method 에따른위배된 code 수 Project : 프로젝트이름 11

5. 도구기능소개 5.3 를이용한코드검사하기 (9/9) Violations Outline Error Message 를클릭하면해당코드를찾아갈수있음 12

5. 도구기능소개 5.4 CPD 를이용한중복코드검사 (1/3) 중복된코드를찾을때사용 : CPD 프로젝트마우스우클릭 Find Suspect Cut And Paste 13

5. 도구기능소개 5.4 CPD 를이용한중복코드검사 (2/3) 중복코드검색조건설정 OK 중복된코드를찾고, 프로젝트의 report 폴더에검색결과를보고 14

5. 도구기능소개 5.4 CPD 를이용한중복코드검사 (3/3) CPD View 창 : 중복된코드에대한정보를알림 Message 중한개를클릭하면해당코드를찾아감 15

5. 도구기능소개 5.5 검사결과 reporting 하기 (1/3) 리포팅하고자하는프로젝트에대해리포트생성. 프로젝트마우스우클릭 Generate reports 16

5. 도구기능소개 5.5 검사결과 reporting 하기 (2/3) 프로젝트폴더에 reports 라는폴더가있는것을확인 17

5. 도구기능소개 5.5 검사결과 reporting 하기 (3/3) Reports 폴더에생성되는파일 Pmd-report.csv : Microsoft Excel 파일 Pmd-report.html : html 파일 Pmd-report.txt : text 파일 Pmd-report.vb.html : VB 파일 Pmd-report.xml : xml 파일 각파일을클릭하면각각의확장자에따라서레포팅된결과를보임 18

6. 도구활용예제 세부목차 6.1 예제소개 6.2 요구사항개발 6.3 코드검사 6.4 코드검사결과 6.5 보고서작성 1

6. 도구활용예제 6.1 예제소개 (1/2) 예제시스템 : StringToken StringToken의 적용과정 StringToken 은 URL의토큰을분리해내는프로그램 Java.util 패키지에속해있는 StringTokenizer 클래스를이용하여토큰을분리 를이용하여소스코드를검사하고레포팅 URL이한단어씩분리하여출력위반되는코딩스타일을사용하여 가검사할수있게함 2

6. 도구활용예제 6.1 예제소개 (2/2) StringToken 의구현이슈 작성한코드를한눈에파악하기어렵고디버깅이힘듦 잘못된변수선언과너무짧은변수명을사용 코드검사한결과를문서로남기어정확한수정이필요 를도입하여소스스타일관리를진행 3

6. 도구활용예제 6.2 요구사항개발 (1/5) StringToken 을위한코드작성 File New Project Java Project 4

6. 도구활용예제 6.2 요구사항개발 (2/5) Java project 생성 Project 이름에 Test 설정 Finish 5

6. 도구활용예제 6.2 요구사항개발 (3/5) StringToken 코드를작성하기위한클래스생성 Test 프로젝트마우스우클릭 New Class Class Name StringToken 입력 Finish 6

6. 도구활용예제 6.2 요구사항개발 (4/5) StringToken 코드작성 StringTokenizer(String str) : 문자열 str 을기본적인구별자 ( \t\n\r) 로토큰을구별을위한생성자 StringTokenizer(String str, String delim) : 문자열 str 을구별자 (delim) 로토큰을구별을위한생성자 StringTokenizer(String str, String delim, boolean returntoken) 문자열 str 을구별자 (delim) 로토큰을구별하고, 구별자를토큰과마찬가지로 nexttoken() 에서반환할여부를 returntoken 값으로기술하는생성자 Boolean hasmoretokens() : 토큰이더이상있는지에대한여부 String nexttoken() : 다음토큰반환 String nexttoken(string delim) 새로운구별자 (delim) 를이용하여다음토큰반환 Int counttokens() 토큰의개수반환 7

6. 도구활용예제 6.2 요구사항개발 (5/5) 잘못된코딩스타일의사용 : 의코딩스타일추출기능확인을위한코드 클래스이름을 package 이름과동일하지않게설정 : 현재 package 이름은 default 입니다 사용되지않는파라미터 args 를선언 If else 문에중괄호를사용하지않음 St 와같이짧은변수이름을사용 st 와 token 같이지역변수이름을 final 로선언하지않음 8

6. 도구활용예제 6.3 의코드검사 코드작성후 를이용하여코드검사 프로젝트선택후마우스우클릭 Check Code With 9

6. 도구활용예제 6.4 의코드검사결과 의코드검사결과 앞서설정한잘못된코딩스타일모두검출 10

6. 도구활용예제 6.5 보고서작성 (1/2) 보고서작성하기 프로젝트선택후마우스우클릭 Generate reports 11

6. 도구활용예제 6.5 보고서작성 (2/2) 보고서작성결과 Test 프로젝트폴더에 reports 폴더가생성되며, reports 폴더에리포트파일이생성 잘못된코딩스타일에대한검사및보고가이루어짐 클래스이름을 package이름과동일하지않게설정 사용되지않는파라미터 args를선언 If else문에중괄호를사용하지않음 St와같이짧은변수이름을사용 st와 token같이지역변수이름을 final로선언하지않음 12

7. FAQ 질문 1) 의약자는무엇인가요? 답변 1 : 는특정단어의약자는아닙니다. 다음과같은여러가지의미를중의적으로사용하고있습니다. Pretty Much Done / Project Mess Detector / Project Monitoring Directives / Project Meets Deadline / Programming Mistake Detector / Pounds Mistakes Dead / Meaning Discovery / Programs of Mass Destruction / Programming Meticulous code 질문 2) 는 Java 에대한코드분석만지원하나요? 답변 2 : 아닙니다. 2012 년 5 월 1 일 Release 된 5.0.0 버전부터 Java 를포함하여 JavaScript, XML, XSL, JSP 도지원합니다. 1

8. 도구평가 활용성 개발자편의대로규칙을바꾸어사용할수있으며, 규칙에따른코드관리로활용하기에용이 범용성 대부분의자바를지원하는도구에서사용가능 호환성 Eclipse 위주로개발된플러그인이나, 제한적으로다른도구에서사용가능 성능 빠른작동성능, 도구에같이로드되고, 사용되어도일반적으로큰문제가없음 기타 5단계 UI 디자인을적용하여, 코딩의문제점에대한단계별인지가용이 도구평가의견 정해진규칙에따라코드를관리하여코딩컨벤션을대신할수있음 리포팅을이용하여잘못작성된코드를쉽게이해할수있음 개발자의편의대로규칙을바꿔원하는규칙으로 기능이용가능 1

9. 용어정리 본매뉴얼에서사용하고있는용어의정리 CPD URL 코딩스타일코딩컨벤션토큰 Copy/Paste Detector. 중복된코드를검사해주는 의기능중하나 Uniform Resource Identifier. 웹상에서서비스를제공하는각서버들에있는파일들의위치를명시하기위한것. 접속해야될서비스의종류, 서버의위치 ( 도메인네임 ), 파일의위치를포함 Programming style. 컴퓨터프로그램의소스코드를작성할때사용되는규칙혹은가이드라인 프로그래머가소스코드를쉽게이해하고유지하는것을돕기위해따르는규칙. 컨벤션은문서화되어모든팀이나회사동료들이따르도록정규화될수있고, 또한각개인의코딩습관에따라다를수있음 문자열의분류화된블록 (block). 어휘분석기 (lexicalanalyzer) 에서문자열을스캐닝한뒤토큰화하면생성되며, 문자열을토큰화할경우프로그래머가정의하기에따라여러가지방식으로토큰을나눔 1