Static Analysis Report for Team 7 Project Team Team 7 Team Information 컴퓨터공학과 김성민컴퓨터공학과 김종우컴퓨터공학과 송원종

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

PowerPoint Presentation

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

PowerPoint Presentation

PowerPoint Presentation

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 08.다형성

Microsoft PowerPoint - 2강

PowerPoint 프레젠테이션

PowerPoint Presentation

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

Microsoft PowerPoint - CSharp-10-예외처리

JAVA PROGRAMMING 실습 09. 예외처리

Network Programming

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

JAVA PROGRAMMING 실습 05. 객체의 활용

쉽게 풀어쓴 C 프로그래밍

Spring Boot/JDBC JdbcTemplate/CRUD 예제

슬라이드 1

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

제11장 프로세스와 쓰레드

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

슬라이드 1

JAVA PROGRAMMING 실습 02. 표준 입출력

No Slide Title

슬라이드 1

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

JVM 메모리구조

PowerPoint Presentation

JUNIT 실습및발표

Cluster management software

자바 프로그래밍

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

SW Verification

Software Verification

4장.문장

PowerPoint Template

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

쉽게

교육자료

제4장 기본 의미구조 (Basic Semantics)

슬라이드 1

PowerPoint 프레젠테이션

PowerPoint Presentation

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

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

슬라이드 1

PowerPoint 프레젠테이션

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

Microsoft PowerPoint - lec2.ppt

PowerPoint Presentation

Semantic Consistency in Information Exchange

Microsoft PowerPoint - Chap12-OOP.ppt

PowerPoint Presentation

Microsoft PowerPoint - Lect04.pptx

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

신림프로그래머_클린코드.key

쉽게 풀어쓴 C 프로그래밍

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

rmi_박준용_final.PDF

PowerPoint Presentation

Microsoft PowerPoint - lec7_package [호환 모드]

PowerPoint Presentation

* Factory class for query and DML clause creation * tiwe * */ public class JPAQueryFactory implements JPQLQueryFactory private f

클래스와객체 필드 메소드 중첩클래스 자료추상화 [2/35]

C++ Programming

예외 예외정의예외발생예외처리예외전파 단정 단정의선언 단정조건검사옵션 2

Microsoft PowerPoint - additional01.ppt [호환 모드]

쉽게 풀어쓴 C 프로그래밍

mytalk

Microsoft PowerPoint - Introduction to Google Guava.pptx

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요


(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

PowerPoint Presentation

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint - Chapter 6.ppt

Cluster management software

(Microsoft PowerPoint - java2-lecture3.ppt [\310\243\310\257 \270\360\265\345])

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

쉽게 풀어쓴 C 프로그래밍

PowerPoint Presentation

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - lec12 [호환 모드]

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

Microsoft PowerPoint - 13_UMLCoding(2010).pptx

슬라이드 1

윤성우의 열혈 TCP/IP 소켓 프로그래밍

설계란 무엇인가?

PowerPoint 프레젠테이션

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

Design Issues

1

JAVA PROGRAMMING 실습 02. 표준 입출력

Transcription:

Static Analysis Report for Team 7 Project Team Team 7 Team Information 컴퓨터공학과 201111341 김성민컴퓨터공학과 201111345 김종우컴퓨터공학과 201211356 송원종

1 Code Scroll 2 Sonar Qube 3 PMD

1. CodeScroller CodeScroll Code Inspector 규칙규칙설명 CERT_Secure_Coding_Standard Java Platform standard edition, 6,7에대한시큐어프로그래밍을위한 Rule과 recommendation CODESCROLL_JAVA_RULES 일반적인자바프로그램에서지켜야할규칙과권고들 Sun_Code_Conventions_for_Java 파일이름,. 파일구성, 들여쓰기, 주석, 선언, 문장, 이름규칙, 프로그래밍 practice등 Sun에서따르기를권고하는표준코딩가이드라인 CodeScroll Code Inspector Violation 규칙 규칙모음 위배수 규칙설명 Sun_24 Sun 82 숫자상수사용금지 Sun_08 Sun 40 블록의시작부분에서만선언검사 Sun_16 Sun 38 메서드선언사이를빈칸으로구분 Sun_20 Sun 34 필드이름검사 Sun_19 Sun 32 메서드이름검사

Sun_04 Sun 14 파일에 package 선언이있는지검사 Sun_06 Sun 14 소스라인길이검사 Sun_03 Sun 12 소스파일시작의 C 스타일주석검사 Sun_14 Sun 10 한줄에한문장만존재하는지검사 Sun_15 Sun 10 class나 interface 선언사이를빈칸으로구분 Sun_10 Sun 7 지역변수선언시초기화검사 Sun_17 Sun 7 메서드내부의지역변수선언부와실행문장사이를빈줄로구분 Sun_26 Sun 5 괄호안의수식에연산자혼용금지 Sun_05 Sun 3 클래스또는인터페이스에서멤버의선언순서검사 Sun_13 Sun 1 Switch 문에 default case가존재하는지검사 Sun_09 Sun 1 필드 hide 제한 MET05-J CERT_SECURE 73 생성자에서 override 가능한메서드를호출하면안된다 OBJ04-J CERT_SECURE 27 mutable 클래스 (regular expression으로지정한이름의클래스. Default: all) 는신뢰할수없는코드에객체를안전하게전달하기위한복사기능을제공해야한다 OBJ10-J CERT_SECURE 14 public static nonfinal 멤버를사용하면안된다 OBJ01-J CERT_SECURE 14 데이터멤버 (non-static, non-final 필드 ) 는 private 으로선언하라. SER05-J CERT_SECURE 13 내부 (inner) 클래스들의인스턴스를직렬화하지마라. ERR02-J CERT_SECURE 2 로그를기록할때는예외가발생하지않도록하라 JAVA_72 CODESROLL_JAVA 70 메서드의설명주석이있어야함 JAVA_71 CODESROLL_JAVA 14 클래스의설명주석이있어야함 JAVA_49 CODESROLL_JAVA 13 static, local, anonymous가아닌내부클래스사용금지 JAVA_68 CODESROLL_JAVA 3 * 을이용한 import 구문의사용금지 JAVA_64 CODESROLL_JAVA 2 반복문안에서 String concatenation assignmet 연산자의사용금지 JAVA_61 CODESROLL_JAVA 1 switch 구문안의 default 검사 JAVA_70 CODESROLL_JAVA 1 변수 hiding 금지 Inspection Violation Summation Rules 규칙모음 포함된 위배수 무시된 설명 규칙수 위배수 Sun_Code_Conventions_for_Java 27 310 0 파일이름, 파일구성, 들여쓰기, 주석, 선언, 문장, 이름규칙, 프로그래밍 practice등 Sun에서

따르기를권고하는표준코딩가이드라인 CERT_Secure_Coding_Standard 99 143 0 Java Platform standard edition 6,7에대한시큐어프로그래밍을위한 Rule과 recommendation 제시 CODESCROLL_JAVA_RULES 72 104 0 일반적인자바프로그램에서지켜야할규칙과권고들 Total: 557 = CERT(143) + CODESCROLL(104) + SUN(310) Inspection Violation Summation Source Files 소스 위배 무시된 위배 *RCR **RVD 파일경로 수 위배수 규칙수 (%) Mainview.java 225 0 19 90.4 0.52 C:\Users\user\git\SM4\src\main\java Controller.java 85 0 15 92.42 0.46 C:\Users\user\git\SM4\src\main\java Payback.java 66 0 16 91.92 0.73 C:\Users\user\git\SM4\src\main\java Bank.java 43 0 17 91.41 0.54 C:\Users\user\git\SM4\src\main\java Account.java 28 0 10 94.95 1.03 C:\Users\user\git\SM4\src\main\java Commission.java 23 0 10 94.95 0.74 C:\Users\user\git\SM4\src\main\java PrintStatement.java 20 0 13 93.43 0.68 C:\Users\user\git\SM4\src\main\java Send.java 17 0 12 93.94 1.06 C:\Users\user\git\SM4\src\main\java CheckRemain.java 14 0 9 95.45 0.87 C:\Users\user\git\SM4\src\main\java Withdraw.java 11 0 9 95.45 0.68 C:\Users\user\git\SM4\src\main\java Deposit.java 9 0 07 96.46 0.81 C:\Users\user\git\SM4\src\main\java LibraryTest.java 6 0 6 96.97 0.75 C:\Users\user\git\SM4\src\Test\java Main.java 6 0 6 96.97 0.75 C:\Users\user\git\SM4\src\main\java Library.java 4 0 4 97.98 0.8 C:\Users\user\git\SM4\src\main\java 2. SonarQube Bugs & Weakness Bugs Weakness New Bugs New Weakness 3 35 3 35 Stink Codes Liability Stinking Codes New Liability New Stinking

Codes 8 Days 332 7 Days 329 Coverage Coverage Coverage on new Code 0.0 % 0.0 % Code reduplication Code Reduplication Duplicated blocks Code Reduplication New Code lines 2.7 % 2 2.7 % 1.3K New Code Lines 3. PMD Rule Basic rulesets/basic.xml Naming rulesets/naming.xml Unused code rulesets/unusedcode.xml Design rulesets/design.xml Import statements rulesets/imports.xml JUnit tests rulesets/junit.xml Strings rulesets/string.xml Description 대부분의개발자들이동의하는규칙 : catch 블록들은비어있어서는안되고, equals() 를오버라이딩할때마다 hashcode() 를오버라이드한다. 표준자바네이밍규약을위한테스트 : 변수이름들은너무짧아서는안된다 ; 메소드이름은너무길어서는안된다. 클래스이름은대문자로시작해야하고, 메소드와필드이름들은소문자로시작해야한다. 결코읽히지않은프라이빗필드와로컬변수, 접근할수없는문장, 결코호출되지않는프라이빗메소드등을찾기다양한좋은디자인원리체크, 이를테면 : switch 문장은 default 블록을갖고있어야하고, 심하게중첩된 if 블록은피해야하고, 매개변수들은재할당되어서는안되며, 더블 (double) 이동일함 (equality) 과비교되어서도안된다임포트문장에대한작은문제들점검. 같은클래스를두번반입하는것이나 java.lang 에서클래스를임포팅하는것등테스트케이스와테스트메소드관련특정문제검색. 메소드이름의정확한스펠링과 suite() 메소드가정적이고퍼블릭인지여부스트링관련작업을할때발생하는일반적인문제들규명. 스트링리터럴중복, String 구조체호출, String 객체에 tostring() 호출하기등.

Braces rulesets/braces.xml Code size rulesets/codesize.xml Javabeans for, if, while, else 문장이괄호를사용하는지여부검사. 과도하게긴메소드, 너무많은메소드를가진클래스, 리팩토링에대한유사한후보들을위한테스트. 직렬화될수없는 bean 클래스같이 JavaBeans 코딩규약을위배하는 JavaBeans 컴포넌트검사. rulesets/javabeans.xml Finalizers finalize() 메소드는 자바에서 일반적인 것은 아니기때문에사용법에대한규칙이비교적 익숙하지 않다. 이 그룹의 검사는 finalize() 메소드 관련한 다양한 문제들을 찾는다. 이를 테면, 비어있는 finalizer, 다른메소드를호출하는 finalize() 메소드 finalize() 로의호출등이그것이다 Clone rulesets/clone.xml Coupling rulesets/coupling.xml Strict exceptions rulesets/strictexception.xml Controversial rulesets/controversial.xml Logging rulesets/logging-java.xml clone() 메소드에대한규칙 : clone() 을오버라이드하는클래스는 Cloneable 을구현해야하고, clone() 메소드는 super.clone() 을호출해야하며,clone() 메소드는실제로던지지않더라도 CloneNotSupportedException 을던지도록선언되어야한다. 클래스들간과도한커플링표시검색. 지나치게많은임포트, supertype 또는인터페이스가충분한곳에서 subclass 유형사용하기, 너무적은필드, 변수, 클래스내의리턴유형등. 예외테스트 : 메소드는 java.lang.exception 을던지도록선언되어서는안되고, 예외는플로우제어에사용되어서는안되며, Throwable 은잡혀서는안된다. 일부 PMD 규칙들은유능한자바프로그래머가받아들일수있는것들이다. 하지만어떤것은논쟁의여지가충분하다. 이규칙세트에는좀더의심스러운검사들이포함되어있다. 변수에 null 할당하기, 메소드에서온다중의리턴포인트 sun 패키지에서임포팅등이포함된다 java.util.logging.logger 를위험하게사용하는경우검색 : 끝나지않고정적이지않은 logger 와한클래스에한개이상의 logger 등