2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

201311263 김민환 201311308 전세진 201411278 서희진 201411317 조민규 Static Analyzers

2018 SOFTWARE VERIFICATION

SonarQube

PMD

FindBugs SonarQube Software verification SonarQube란? 01 SonarQube, PMD, FindBugs

• 프로젝트의 품질을 관리할 수 있도 록 여러가지 모니터링 툴을 제공하 는 오픈소스 플랫폼.

• CI Server 와 연동하여 사용.

• Java 포함 20가지 이상의 Programming Language로 제작된 프로젝트의 모니터링을 제공. SonarQube Software verification SonarQube 장점 01 SonarQube, PMD, FindBugs

• Opensource Project인 관계로 License 비용 없이 다운 받아서 사용이 가능.

• 강력하고 심플 한 Dashboard(Web Monitoring UI) 제공.

• Table과 Chart를 이용하여 시간이 지남에 따 라 프로젝트가 얼마나 개선되고 있는지 시 각적으로 보여줌.

• 코딩품질 개선을 위한 정보(소스의 중복이 나 복잡도 그리고 유닛 테스트의 커버리지 및 잠재적인 버그의 정보 등)를 프로젝트 단 위부터 파일단위까지 제공. SonarQube Software verification 설치 01 SonarQube, PMD, FindBugs MySQL DB생성 및 권한 부여(with Docker) SonarQube Software verification 설치 01 SonarQube, PMD, FindBugs MySQL DB생성 및 권한 부여(with Docker) SonarQube Software verification 설치 01 SonarQube, PMD, FindBugs /Redmine/SonarQube 설치(with Docker) SonarQube Software verification 설치 01 SonarQube, PMD, FindBugs Jenkins/Redmine/SonarQube 설치(with Docker) SonarQube Software verification 설치 01 SonarQube, PMD, FindBugs Jenkins/Redmine/SonarQube 설치(with Docker) SonarQube Software verification 설치 01 SonarQube, PMD, FindBugs Jenkins/Redmine/SonarQube 설치(with Docker) SonarQube Software verification 설치 01 SonarQube, PMD, FindBugs Jenkins/Redmine/SonarQube 설치(with Docker) PMD Software verification PMD 소개 0102 SonarQube, PMD, FindBugs PMD Software verification PMD 소개 0102 SonarQube, PMD, FindBugs

공식 홈페이지(https://pmd.github.io/)의 설명 PMD Software verification PMD 소개 0102 SonarQube, PMD, FindBugs

1. 다음의 결함들을 잡아낸다. 2. 다음의 언어들을 지원한다.

• 안 쓰는 변수

• 빈 catch 블록

• 불필요하게 생성된 객체

• 기타 등등 (and so forth) • 그 외 (Apex, VisualForce, PLSQL, …) PMD Software verification PMD 소개 0102 SonarQube, PMD, FindBugs

CPD (Copy-Paste-Detector)

• PMD에 기본적으로 포함된 도구.

• 중복된 코드를 잡아낸다.

• Java, Javascript, Python, , C++, Groovy, PHP 등에 적용할 수 있다. PMD Software verification PMD 소개 0102 SonarQube, PMD, FindBugs

Plugin Support PMD Software verification PMD 사용 0102 SonarQube, PMD, FindBugs

1. Rule 지정하기 (rules.) PMD Software verification PMD 사용 0102 SonarQube, PMD, FindBugs

1. Rule 지정하기 (rules.xml) PMD Software verification PMD 사용 0102 SonarQube, PMD, FindBugs

2. 소스코드 만들기 (Main.java) PMD Software verification PMD 사용 0102 SonarQube, PMD, FindBugs

3. 정적분석 FindBugs Software verification FindBugs 소개 0103 SonarQube, PMD, FindBugs FindBugs Software verification FindBugs 소개 0103 SonarQube, PMD, FindBugs

FindBugs

• 소스코드에 문제가 될 수 있는 부분을 찾는 Static Analysis

• Compile된 Byte Code 기반으로 Bug의 패턴을 찾아 자동으로 알려줌 FindBugs Software verification FindBugs 소개 0103 SonarQube, PMD, FindBugs

FindBugs

Java 프로그램에서 100여 가지의 잠재적인 에러 타입을 찾아주며,

Scariest, Scary, Troubling, Concern 등으로 구분하여 점수(Rank)가 주어진다. FindBugs Software verification FindBugs 소개 0103 SonarQube, PMD, FindBugs

FindBugs

• *.java파일이 아닌 *.class 오브젝트 코드를 분석한다.

• Byte Code 기반으로 분석 진행한다. FindBugs Software verification FindBugs 소개 0103 SonarQube, PMD, FindBugs

다양한 Bugs들을 찾아준다. ETC Software verification SonarQube, PMD, FindBugs CTIP 환경 정리 0104

# IDE : IntelliJ with... - Unit Test : JUnit Framework - Build Tool : - Static Analysis Tools : FindBugs, PMD, SonarQube*

# Configuration Management Tool(with code repository) : GitHub

# Issue Management Tool : Redmine(with Requirement Management Tool : Redcase)*

# Continuous Integration Tool : Jenkins*

# Collaboration Messenger : Slack

* Server installation is required.