2018 software verification static analyzersdslab.konkuk.ac.kr/class/2018/18sv/team...

26
2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs 201311263 김민환 201311308 전세진 201411278 서희진 201411317 조민규

Upload: others

Post on 10-Jul-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

2018 SOFTWARE VERIFICATION

Static Analyzers

SonarQube, PMD, FindBugs

201311263 김민환

201311308 전세진

201411278 서희진

201411317 조민규

Page 2: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

SonarQube

PMD

FindBugs

Static Analyzers

2018 SOFTWARE VERIFICATION

Page 3: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

SonarQube Software verification

SonarQube, PMD, FindBugs0101

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

• CI Server 와 연동하여 사용.

• Java 포함 20가지 이상의Programming Language로 제작된프로젝트의 모니터링을 제공.

SonarQube란?

Page 4: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

SonarQube Software verification

SonarQube, PMD, FindBugs0101

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

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

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

• 코딩품질 개선을 위한 정보(소스의 중복이나 복잡도 그리고 유닛 테스트의 커버리지및 잠재적인 버그의 정보 등)를 프로젝트 단위부터 파일단위까지 제공.

SonarQube 장점

Page 5: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

SonarQube Software verification

SonarQube, PMD, FindBugs0101설치

MySQL DB생성 및 권한 부여(with Docker)

Page 6: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

SonarQube Software verification

SonarQube, PMD, FindBugs0101설치

MySQL DB생성 및 권한 부여(with Docker)

Page 7: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

SonarQube Software verification

SonarQube, PMD, FindBugs0101설치

Jenkins/Redmine/SonarQube 설치(with Docker)

Page 8: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

SonarQube Software verification

SonarQube, PMD, FindBugs0101설치

Jenkins/Redmine/SonarQube 설치(with Docker)

Page 9: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

SonarQube Software verification

SonarQube, PMD, FindBugs0101설치

Jenkins/Redmine/SonarQube 설치(with Docker)

Page 10: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

SonarQube Software verification

SonarQube, PMD, FindBugs0101설치

Jenkins/Redmine/SonarQube 설치(with Docker)

Page 11: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

SonarQube Software verification

SonarQube, PMD, FindBugs0101설치

Jenkins/Redmine/SonarQube 설치(with Docker)

Page 12: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

PMD Software verification

SonarQube, PMD, FindBugs0102PMD 소개

Page 13: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

PMD Software verification

SonarQube, PMD, FindBugs0102

공식 홈페이지(https://pmd.github.io/)의 설명

PMD 소개

Page 14: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

PMD Software verification

SonarQube, PMD, FindBugs0102PMD 소개

1. 다음의 결함들을 잡아낸다.

• 안 쓰는 변수

• 빈 catch 블록

• 불필요하게 생성된 객체

• 기타 등등 (and so forth)

2. 다음의 언어들을 지원한다.

• 그 외 (Apex, VisualForce, PLSQL, …)

Page 15: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

PMD Software verification

SonarQube, PMD, FindBugs0102

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

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

• Java, Javascript, Python, C, C++, Groovy, PHP 등에 적용할 수 있다.

PMD 소개

CPD (Copy-Paste-Detector)

Page 16: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

PMD Software verification

SonarQube, PMD, FindBugs0102PMD 소개

Plugin Support

Page 17: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

PMD Software verification

SonarQube, PMD, FindBugs0102PMD 사용

1. Rule 지정하기 (rules.xml)

Page 18: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

PMD Software verification

SonarQube, PMD, FindBugs0102PMD 사용

1. Rule 지정하기 (rules.xml)

Page 19: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

PMD Software verification

SonarQube, PMD, FindBugs0102PMD 사용

2. 소스코드 만들기 (Main.java)

Page 20: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

PMD Software verification

SonarQube, PMD, FindBugs0102PMD 사용

3. 정적분석

Page 21: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

FindBugs

0103FindBugs 소개Software verification

SonarQube, PMD, FindBugs

Page 22: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

FindBugs

0103FindBugs 소개Software verification

SonarQube, PMD, FindBugs

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

• Compile된 Byte Code 기반으로 Bug의 패턴을 찾아 자동으로 알려줌

FindBugs

Page 23: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

FindBugs

0103FindBugs 소개Software verification

SonarQube, PMD, FindBugs

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

Scariest, Scary, Troubling, Concern 등으로 구분하여 점수(Rank)가 주어진다.

FindBugs

Page 24: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

FindBugs

0103FindBugs 소개Software verification

SonarQube, PMD, FindBugs

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

• Byte Code 기반으로 분석 진행한다.

FindBugs

Page 25: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

FindBugs

0103FindBugs 소개

다양한 Bugs들을 찾아준다.

Software verification

SonarQube, PMD, FindBugs

Page 26: 2018 SOFTWARE VERIFICATION Static Analyzersdslab.konkuk.ac.kr/Class/2018/18SV/Team Project/3/T1.pdf · 2018-04-18 · 2018 SOFTWARE VERIFICATION Static Analyzers SonarQube, PMD, FindBugs

ETC Software verification

SonarQube, PMD, FindBugs0104

# IDE : IntelliJ with...- Unit Test : JUnit Framework- Build Tool : Gradle- 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.

CTIP 환경 정리