SlideShare a Scribd company logo
1 of 36
Download to read offline
SonarSource SonarQube 소개
지속적인 코드 품질 관리
Version Version 2.1
Date 2018.07
Author CURVC Corp.
Type Customer Presentation
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
Water Leak
걸레질을 할까요?
집에 물이 새고 있습니다.
원인을 찾아서 고쳐야 할까요?
소프트웨어에도
똑같이 적용할 수 있지 않을까요?
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
?
Traditional approach
전형적인 개발에서는 릴리즈 직전에 정기적인 코드 품질 감사를 수행하고 개발자가 조치를 취합니다.
이러한 접근은 단기간에 강력한 관리로 효과적일 수 있지만, 중장기적으로 일관되게 실패합니다.
팀 외부에서 생성된 새로운 업
무, 늦은 스케줄로 개발자의 학
습 필요
정시 감사 일정으로 늦은 문제
발견, 문제에 따라 프로젝트 일
정 변경 필요
너무 늦은 개발팀의 무관심
개발 프로세스는 개발자
품질 프로세스는 감사자
다른 요구사항으로 각 어플리
케이션 측정, 공통적 품질 요구
사항 적용이 불가능
오너쉽의 부재 이질적인 요구사항
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube Concept
SonarQube의 지속적인 인스펙션(Continuous Inspection)은 소프트웨어 개발 라이프사이클의 완전한 부분
으로 소프트웨어 품질을 향상시키기 위해 설계된 코드 품질 관리를 위한 새로운 패러다임입니다.
프로젝트 이해관계자를 위한
품질 가시화
지속적인 통합처럼 지속적인
검사를 수행
지속적인 검사 품질 가시화
개발 초기부터 문제를 해결하
여 ROI 향상
알림을 통한 최대한 빠른 해결
과 개발 훈련
조기에 문제 해결 문제 해결의 적시성
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube Overview
SonarQube는 20개 이상의 프로그래밍 언어의 버그, 코드 스멜, 보안 취약성과 같은 정적 분석과 자동화된
리뷰를 수행하여 코드 품질의 지속적인 인스펙션을 지원하는 플랫폼입니다.
프로젝트 기반 품질 측정
• 프로젝트의 홈에서 품질 게이트, 버그, 취약성, 중
복코드, 단위 테스팅 정보를 한눈에 보여주며 현
재 코드의 품질 측면에서 위치를 확인합니다.
• 빌드와 통합을 통해 소스 코드 품질의 변화를 즉
각적으로 확인할 수 있습니다.
다중 언어의 Coding Rules
• SonarQube는 Java, C/C++과 같은 인기있는 20
개 이상의 언어의 코딩 룰을 제공합니다.
• Checkstyle, Clover, Findbugs, PMD 등 다양한 외
부 분석기에 대한 플러그인을 지원합니다.
Quality Profiles
• SonarQube는 프로젝트 분석 시 사용되는 규칙
(Rulesets)을 정의할 수 있습니다.
• 이 룰셋은 품질 프로파일로 구성되고 조직의 모
든 구성원은 프로젝트에 적용되는 규칙을 확인할
수 있습니다.
Quality Gates
• 품질 게이트(Quality Gate)를 통해 다양한 조직의
품질 요구사항을 설정할 수 있습니다.
• 복잡도, 커버리지, 중복, 보안성, 유지보수성, 사
이즈, 신뢰성, 이슈 등 다양한 항목에 대한 품질
요구사항을 설정합니다.
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube Support Languages
C#
348
Java
471
PHP
141
TypeScript
110
XML
7
Flex
73
JS
193
Python
54
Web
54
ABAP
84
C++
328
C
231
PL/SQL
158
TSQL
63
Swift
114
Go
40
Objective-C
226
VB.NET
69
COBOL
172
RPG
57
PL/I
26
VB6
40
Community
Edition
Developer
Edition
Enterprise
Edition https://rules.sonarsource.com
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube Architecture
SonarQube Server
ComputeEngine WebServer
SearchServer
SonarQube Scanners
…
SonarQube Scanner
SonarQube Scanner
for MSBuild
SonarQube Scanner
for Maven
SonarQube Scanner
for Gradle
SonarQube Scanner
for Ant
SonarQube Scanner
for VSTS-TFS
Databases
Processing
code analysis
report
Elastic search
Rules
SonarQube
Plugin
Java, C#,
C/C++,
VB.NET,
Objective-C …
Crowd Server LDAP Server
User
Information
User
Information
PostgreSQL
MS SQL
Oracle
MySQL
Programming
Languages
SonarQube는 4개의 컴포넌트로 구성됩니다. 첫번째는 SonarQube 서버, 두번째는 데이터베이스, 세번째는
SonarQube 플러그인, 마지막은 SonarQube Scanner로 구성됩니다.
1
2
3
4
Profiles
Quality Gate
Issues
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
프로젝트 페이지에서는 전체 프로젝트의 현황을 빠르게 파악할 수 있게 해줍니다. 품질 요구사항을 만족
하지 못하는 프로젝트 혹은 특정 이슈들이 발견된 프로젝트를 필터할 수 있습니다.
SonarQube > Projects
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube는 교차 프로젝트 서비스를 제공합니다. 개발자들은 프로젝트와 상관없이 자신에게 할당된 이
슈리스트를 확인할 수 있습니다.
SonarQube > All Issues
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
Quality Profile
Code Metric
Coding Rules
SonarQube는 코드 품질 관리를 위해 다음과 같이 Rules, Quality Profiles, Code Metric, Quality Gate의 개념이
포함되어 있습니다.
SonarQube > Quality Management
Rule 1
Rule 2
Rule 3
Rule 4
Rule 5
Rule 6
Rule 7
Rule 8
……
Rule 1
Rule 4
Rule 5
Rule7
복잡도
단위테스트
코드 중복
코멘트
Quality Gate
신뢰성 A 이상
보안성 A 이상
유지보수성 B이상
커버리지 80%이상
중복코드 10%이하
함수 복잡도 10이하
파일 복잡도 10이하
코멘트 70%이상
……
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube > Rule Type
Bugs
Reliability
Vulnerabilities
Security
Code Smells
Maintainability
잠재적인 버그, 런타임에 예상
되는 동작을 가지지 않는 코드
어플리케이션이 잘못된 방식
으로 사용될 수 있는 취약점
모듈성, 이해가능성, 변경가능
성, 테스트 가능성, 재사용성
Poor한 코드 품질은 팀 속도 저하, 어플리케이션 폐기, 프로덕션에서 크래쉬, 나쁜 회사 평판과 같은 다양
한 문제를 일으킵니다. SonarQube는 신뢰성, 보안성, 유지보수성을 향상시키는 솔루션을 제공합니다.
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube의 Rules 페이지에서는 SonarQube에 존재하는 모든 룰을 확인할 수 있습니다. 지원 언어별, 타입
별, Tag별, Third Party Rule 등 모든 룰을 확인할 수 있습니다.
SonarQube > Rules
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
Quality Profiles은 Rules의 집합을 정의함으로써 조직이 원하는 코딩 룰에 대한 요구사항을 정의할 수 있기
때문에 SonarQube의 핵심입니다.
SonarQube > Profiles 1/2
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
Quality Profiles은 Rules의 집합을 정의함으로써 조직이 원하는 코딩 룰에 대한 요구사항을 정의할 수 있기
때문에 SonarQube의 핵심입니다. 이를 통해 원하는 Rules을 추가하거나 제외할 수 있습니다.
SonarQube > Profiles 2/2
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
Quality Gate는 어플리케이션을 릴리즈 하기 전에 어플리케이션이 품질 요구사항을 지키고 있는지 확인하
는 기준 목록입니다. Quality Gate를 통해 어플리케이션의 출시 여부를 결정할 수 있습니다.
SonarQube > Quality Gate
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube > Rating Model
Severity에 따라 등급 표시
• A = 0
• B = 1 이상의 Minor 존재 시
• C = 1 이상의 Major 존재 시
• D = 1 이상의 Critical 존재 시
• E = 1 이상의 Blocker 존재 시
유지보수 Rating에 따라 등급 표시
• A = 5% 이하
• B = 6~10%
• C = 11~20%
• D = 21~50%
• E = 50%~
수정비용 / 개발비용
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
코드 품질 관리를 위해 권장되는 접근방법은 무엇일까요?
물이 새는 것을 관리하고 바닥을 청소하기 전에 물이 새는 것을 수리하세요.
SonarQube > The Water Leak Paradigm
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
Project의 Issues 페이지는 프로젝트에 존재하는 이슈들을 보여줍니다. 개발자들은 자신에게 할당된 프로
젝트 이슈를 확인할 수 있습니다.
SonarQube > Project Issues
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube는 여러 위치에서 발견된 이슈를 코드 경로 상에 표시하고 쉽게 네비게이션하여 찾을 수 있게
도와줍니다.
SonarQube > Issues
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube는 발견된 이슈의 세부적인 정보를 제공합니다. 이슈에 대한 설명과 함께 잘못된 예제와 코딩
룰을 준수하는 예제를 확인할 수 있습니다.
SonarQube > Issues
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube의 Measure에서는 Reliability, Security, Maintainability, Tests, Duplications, Complexity, Size, Issues
등 다양한 Metric을 정의하고 측정하고 있습니다.
SonarQube > Metric 1/3
Name Description
Bugs 버그 수
New Bugs 새로운 버그 수
Reliability Rating A = 0 버그
B = 1 이상의 Minor 버그
C = 1 이상의 Major 버그
D = 1 이상의 Critical 버그
E = 1 이상의 Blocker 버그
Reliability
remediation effort
버그 이슈를 수정하는데 소요
되는 시간(분 단위 저장)
Reliability
remediation effort
on new code
새로운 코드에서 버그 이슈를
수정하는데 소요되는 시간
Name Description
Vulnerabilities 취약점 수
New Vulnerabilities 새로운 취약점 수
Security Rating A = 0 취약성
B = 1 이상의 Minor 취약성
C = 1 이상의 Major 취약성
D = 1 이상의 Critical 취약성
E = 1 이상의 Blocker 취약성
Security
remediation effort
취약성 이슈를 수정하는데 소
요되는 시간(분 단위 저장)
Security
remediation effort
on new code
새로운 코드에서 취약성 이슈
를 수정하는데 소요되는 시간
Reliability Security
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube의 Measure 에서는 Reliability, Security, Maintainability, Tests, Duplications, Complexity, Size, Issues
등 다양한 Metric을 정의하고 측정하고 있습니다.
SonarQube > Metric 2/3
Name Description
Code Smells 코드 스멜 수
New Code Smells 새로운 코드 스멜 수
Maintainability
Rating
A = 5% 이하
B = 6~10%
C = 11~20%
D = 21~50%
E = 50%~
Technical Debt 유지보수 이슈를 수정하는데
소요되는 시간(분 단위 저장)
Technical Debt on
new code
새로운 코드에서 유지보수 이
슈를 수정하는데 소요되는 시
간
Technical Debt Ratio 수정 비용 / 개발 비용
코드 한 줄 개발 비용은 0.06일
Technical Debt Ratio
on new code
새로운 코드에서 Technical
Debt Ratio
Name Description
Condition Coverage Condition coverage = (CT + CF) /
(2*B)
Coverage Coverage = (CT + CF + LC)/(2*B +
EL)
Line Coverage Line coverage = LC / EL
Unit tests 단위 테스트 수
Unit test duration 단위 테스트 수행 시간
Unit test errors 실패된 단위 테스트 수
Unit test failures 예상치 못한 실행으로 실패된
단위 테스트 수
Unit test success
density(%)
테스트 성공 밀도 = (Unit
tests - (Unit test
errors + Unit test failures))
/ Unit tests * 100
Maintainability Tests
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube의 Measure 에서는 Reliability, Security, Maintainability, Tests, Duplications, Complexity, Size, Issues
등 다양한 Metric을 정의하고 측정하고 있습니다.
SonarQube > Metric 2/3
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube의 Measure 에서는 Reliability, Security, Maintainability, Tests, Duplications, Complexity, Size, Issues
등 다양한 Metric을 정의하고 측정하고 있습니다.
SonarQube > Metric 3/3
Name Description
Classes 클래스의 수
Comment lines 주석 혹은 주석 처리된 코드 수
Comments (%) 주석 밀도 = 주석 줄 / (코드 줄
+ 주석 줄) * 100
Directories 디렉토리 수
Files 파일 수
Lines 전체 라인수
Lines of code 문자가 하나이상 포함된 물리
적 라인 수
Functions 함수 수
Statements 문장 수
Name Description
Complexity 코드의 경로 수를 기반으로 계
산된 복잡도
Cognitive
Complexity
더 좋은 복잡도 측정법
Size Complexity
Name Description
Duplicated blocks 중복된 라인 블록 수
Duplicated files 중복된 파일 수
Duplicated lines 중복된 라인 수
Duplicated lines(%) 중복 밀도 = 중복된 라인 / 라인
수 * 100
Duplications
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube의 Mesure에서는 Reliability, Security, Maintainability, Tests, Duplications, Complexity, Size, Issues등
다양한 Metric을 정의하고 측정하고 있습니다.
SonarQube > Metric 3/3
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube의 Project Code에서는 폴더 구조에 해당하는 코드의 LOC, Bugs, Vulnerabilities, Code Smells,
Coverage, Duplication을 확인할 수 있습니다.
SonarQube > Code
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube의 Project Activity는 SonarQube 측정 지표의 트랜드를 확인할 수 있습니다. 기본적으로 Issues,
Coverage, Duplication을 보여주며, Custom을 통해 측정한 모든 데이터의 트랜드를 확인할 수 있습니다.
SonarQube > Activity
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
Branch 기반으로 개발을 한다면 SonarQube에서 Short-lived와 Long-lived 코드 브랜치의 품질을 추적할 수
있습니다. 안정성이 보장된 코드만이 master로 merge될 수 있습니다.
SonarQube > Branch analysis
Developer Edition
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube Portfolios를 통해 팀별 혹은 제품별로 원하는 형태의 포트폴리오를 구성할 수 있습니다. 품질
게이트를 실패한 프로젝트의 비율은 Releaseability로 표시됩니다. 이를 통해 릴리즈를 결정할 수 있습니다.
SonarQube > Portfolios 1/2
Enterprise Edition
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube Portfolios를 통해 팀별 혹은 제품별로 원하는 형태의 포트폴리오를 구성할 수 있습니다. 품질
게이트를 실패한 프로젝트의 비율은 Releaseability로 표시됩니다. 이를 통해 릴리즈를 결정할 수 있습니다.
SonarQube > Portfolios 2/2
Enterprise Edition
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube > Integration
SonarQube는 인기있는 Build Systems, CI Engine, IDE와 통합을 제공하며, SonarQube의 Web API와 Web Hook
을 통해 원하는 시스템과의 통합을 수행할 수 있습니다.
Build Systems과 통합
• 표준 빌드 시스템과 강력하게 통합되어 Zero-
Configuration을 제공합니다.
• Maven, MSBuild, Gradle, ANT와 같은 인기있는
빌드 시스템과 무설정 혹은 약간의 설정으로 프
로젝트를 빠르게 스캔할 수 있습니다.
CI Engines과 통합
• 빌드 시스템과 쉬운 통합은 CI 엔진과도 쉽게 통
합됨을 의미합니다.
• Bamboo, Travis CI, Jenkins, AppVeyor, Team
Foundation Server, TeamCity와 같은 다양한 CI
엔진에서 원클릭 만으로 SonarQube를 연동할
수 있습니다.
IDE와 통합
• 개발자는 자신이 좋아하는 IDE에서 코드 품질에
대한 피드백을 얻을 수 있습니다.
• SonarLint는 이클립스, Intelli J, 비주얼 스튜디오,
비주얼 스튜디오 코드, Atom과 같은 IDE에서 실
시간으로 코드 품질에 대한 피드백을 제공합니다.
Web API와 Web Hook
• SonarQube의 웹 API를 사용하여 SonarQube를
자동적으로 프로비저닝하거나 BI에 원하는 데이
터를 제공하거나 모니터링 할 수 있습니다.
• 표준 웹 훅(Webhook) 메커니즘을 사용하여 채팅
방과 같은 외부 시스템에 알림을 수행할 수 있습
니다.
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube > Marketplace
SonarQube의 Marketplace를 통해 SonarQube 기능 향상을 지원하는 75개의 플러그인을 다운로드 받거나
설치할 수 있으며, 이러한 플러그인은 추후 추가될 예정입니다.
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarQube Edition & Event
Community
Edition
Developer
Edition
Enterprise
Edition
Data Center
Edition
✓ SonarQube & 60+
플러그인
✓ SonarLint
✓ 10 Languages
✓ Community 포함
✓ 브랜치 분석
✓ SonarLint 알림
✓ 17 Languages
✓ 하나의 테스팅 및
스테이징 인스턴스
제공
✓ Developer 포함
✓ 포트폴리오 관리
✓ Executive 리포팅
✓ 21 Languages
✓ 전문가 기술 지원
포함
✓ Enterprise 포함
✓ 컴포넌트 리더던시
✓ 데이터 무결성
✓ 3개의 추가적인 라
이센스
* 각 분석 된 프로젝트의 LOC(Line Of Code)를 합산하여 계산
20만원부터 2,100만원부터 13,500만원부터
85,000 회사에서 사용중 개발자를 위한 버전 엔터프라이즈를 위해 고가용성을 위한
Free
SonarQube에 관심있으신 모든 분에게 평가판 라이선스를 제공합니다.
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
감사합니다.
Thank you!
Contact
curvc@curvc.com
02-6245-5478
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarCFamily for C/C++
C++ C
Rules 316 Rules 226
Bugs 69 Bugs 56
Code Smells 245 Code Smells 168
Vulnerabilities 2 Vulnerabilities 2
CWE 27 CWE 26
SANS Top 25 2 SANS Top 25 2
MISRA 119 MISRA 111
CERT 89 CERT 69
• Memory Leak
• Dead Code
• Logic Flow Error
• Dereference of Null Pointers
• Coding Conventions
• Error Handling
• Memory Leak
• Dead Code
• Logic Flow Error
• Dereference of Null Pointers
• Coding Conventions
• Error Handling
Copyright(C) 2014-2018 CURVC Corp. All rights reserved
SonarCFamily for C/C++
• Supported Compilers, Language Standards and Operating Systems
• Any version of Clang, GCC and Microsoft C/C++ compilers
• Any version of Intel compiler for Linux and OS X
• ARM5 and ARM6 compilers
• Compilers based wholly on GCC including for instance Linaro GCC and WindRiver
GCC are also supported
• C89, C99, C11, C++03, C++11 and C++14 standards
• Microsoft Component Extensions for runtime platforms : C++/CLI and C++/CX
• GNU extensions
• Microsoft Windows, Linux and Mac OS X for runtime environment
• Metrics
• Code coverage by tests: SonarCFamily for C/C++ support the import of MS visual
studio and GCOV coverage reports along with the import of CPP unit report.
• Custom Rules
• SonarCFamily for C/C++ doesn’t yet provide the ability to write custom rules.
• CWE compatibility
• SonarCFamily for C/C++ is officially registered as CWE compatible.

More Related Content

What's hot

RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개Wonchang Song
 
ISMS 개발보안, 시큐어코딩을 위한 sonarqube의 활용.건국대학교병원.이제관 기술사
ISMS 개발보안, 시큐어코딩을 위한 sonarqube의 활용.건국대학교병원.이제관 기술사ISMS 개발보안, 시큐어코딩을 위한 sonarqube의 활용.건국대학교병원.이제관 기술사
ISMS 개발보안, 시큐어코딩을 위한 sonarqube의 활용.건국대학교병원.이제관 기술사제관 이
 
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현NAVER Engineering
 
Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.Kris Buytaert
 
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중Amazon Web Services Korea
 
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관제관 이
 
[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)용호 최
 
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
AWS App Runner를 활용한 컨테이너 서버리스 활용기
AWS App Runner를 활용한 컨테이너 서버리스 활용기AWS App Runner를 활용한 컨테이너 서버리스 활용기
AWS App Runner를 활용한 컨테이너 서버리스 활용기JinyoungKim52579
 
우아한 모노리스
우아한 모노리스우아한 모노리스
우아한 모노리스Arawn Park
 
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정Arawn Park
 
Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...Amazon Web Services
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advanceDaeMyung Kang
 
RESTful API 설계
RESTful API 설계RESTful API 설계
RESTful API 설계Jinho Yoo
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 rockplace
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 SangIn Choung
 
Microservice Architecture Patterns, by Richard Langlois P. Eng.
Microservice Architecture Patterns, by Richard Langlois P. Eng.Microservice Architecture Patterns, by Richard Langlois P. Eng.
Microservice Architecture Patterns, by Richard Langlois P. Eng.Richard Langlois P. Eng.
 
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021AWSKRUG - AWS한국사용자모임
 

What's hot (20)

RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개RPC에서 REST까지 간단한 개념소개
RPC에서 REST까지 간단한 개념소개
 
ISMS 개발보안, 시큐어코딩을 위한 sonarqube의 활용.건국대학교병원.이제관 기술사
ISMS 개발보안, 시큐어코딩을 위한 sonarqube의 활용.건국대학교병원.이제관 기술사ISMS 개발보안, 시큐어코딩을 위한 sonarqube의 활용.건국대학교병원.이제관 기술사
ISMS 개발보안, 시큐어코딩을 위한 sonarqube의 활용.건국대학교병원.이제관 기술사
 
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
[네이버오픈소스세미나] Pinpoint를 이용해서 서버리스 플랫폼 Apache Openwhisk 트레이싱하기 - 오승현
 
Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.Devops, the future is here, it's just not evenly distributed yet.
Devops, the future is here, it's just not evenly distributed yet.
 
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
판교 개발자 데이 – Aws가 제안하는 서버리스 아키텍처 – 김필중
 
AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기AWS Fargate on EKS 실전 사용하기
AWS Fargate on EKS 실전 사용하기
 
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
마이크로서비스 아키텍처 기반의 의료정보시스템 고도화 전환사례.건국대학교병원.이제관
 
[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)
 
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
 
AWS App Runner를 활용한 컨테이너 서버리스 활용기
AWS App Runner를 활용한 컨테이너 서버리스 활용기AWS App Runner를 활용한 컨테이너 서버리스 활용기
AWS App Runner를 활용한 컨테이너 서버리스 활용기
 
우아한 모노리스
우아한 모노리스우아한 모노리스
우아한 모노리스
 
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
AWS 클라우드 기반 게임 아키텍처 사례 - AWS Summit Seoul 2017
 
이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정이벤트 기반 분산 시스템을 향한 여정
이벤트 기반 분산 시스템을 향한 여정
 
Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...Intégration et livraison continues des bonnes pratiques de conception d'appli...
Intégration et livraison continues des bonnes pratiques de conception d'appli...
 
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
 
RESTful API 설계
RESTful API 설계RESTful API 설계
RESTful API 설계
 
Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성 Jenkins를 활용한 Openshift CI/CD 구성
Jenkins를 활용한 Openshift CI/CD 구성
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
 
Microservice Architecture Patterns, by Richard Langlois P. Eng.
Microservice Architecture Patterns, by Richard Langlois P. Eng.Microservice Architecture Patterns, by Richard Langlois P. Eng.
Microservice Architecture Patterns, by Richard Langlois P. Eng.
 
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
AWS와 함께하는 무중단 배포 파이프라인 개선기 - 황성찬 (AUSG) :: AWS Community Day Online 2021
 

Similar to SonarQube와 함께하는 소프트웨어 품질 세미나 - SonarQube 소개

투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2tobeware
 
CA LISA 서비스가상화
CA LISA 서비스가상화CA LISA 서비스가상화
CA LISA 서비스가상화Eugene Chung
 
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기Ji-Woong Choi
 
VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리Gyuwon Yi
 
웹스트리밍동영상보안자료
웹스트리밍동영상보안자료웹스트리밍동영상보안자료
웹스트리밍동영상보안자료시온시큐리티
 
더 나은 SW프로젝트를 위해
 더 나은 SW프로젝트를 위해 더 나은 SW프로젝트를 위해
더 나은 SW프로젝트를 위해지수 윤
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)SangIn Choung
 
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...asfasf4
 
포티파이 안전한 애플리케이션 구축 및 운영방안
포티파이 안전한 애플리케이션 구축 및 운영방안포티파이 안전한 애플리케이션 구축 및 운영방안
포티파이 안전한 애플리케이션 구축 및 운영방안TJ Seo
 
IEC 61508-3 SW Engineering
IEC 61508-3 SW EngineeringIEC 61508-3 SW Engineering
IEC 61508-3 SW EngineeringHongseok Lee
 
05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크InGuen Hwang
 
ALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsTaeyoung Kim
 
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기SangIn Choung
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDDSunghyouk Bae
 
Effective application of software safety techniques for automotive embedded c...
Effective application of software safety techniques for automotive embedded c...Effective application of software safety techniques for automotive embedded c...
Effective application of software safety techniques for automotive embedded c...Hongseok Lee
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)SangIn Choung
 
모아소프트(MOASOFT) 회사소개서 (20200922) version
모아소프트(MOASOFT) 회사소개서 (20200922) version모아소프트(MOASOFT) 회사소개서 (20200922) version
모아소프트(MOASOFT) 회사소개서 (20200922) version모아소프트 MOASOFT
 
Open source community Building
Open source community BuildingOpen source community Building
Open source community BuildingKevin Kim
 
ISO26262-6 Software development process (Ver 3.0)
ISO26262-6 Software development process (Ver 3.0)ISO26262-6 Software development process (Ver 3.0)
ISO26262-6 Software development process (Ver 3.0)Hongseok Lee
 
DevSecOps 그리고 협업 - GitLab
DevSecOps 그리고 협업 - GitLabDevSecOps 그리고 협업 - GitLab
DevSecOps 그리고 협업 - GitLabGuenjun Yoo
 

Similar to SonarQube와 함께하는 소프트웨어 품질 세미나 - SonarQube 소개 (20)

투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
투비웨어 AgitarOne Junit 단위테스트자동화 솔루션소개_201608_v1.2
 
CA LISA 서비스가상화
CA LISA 서비스가상화CA LISA 서비스가상화
CA LISA 서비스가상화
 
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
[오픈소스컨설팅] 오픈소스 기반 솔루션 방향성 잡기
 
VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리VSTS와 Azure를 이용한 팀 프로세스 관리
VSTS와 Azure를 이용한 팀 프로세스 관리
 
웹스트리밍동영상보안자료
웹스트리밍동영상보안자료웹스트리밍동영상보안자료
웹스트리밍동영상보안자료
 
더 나은 SW프로젝트를 위해
 더 나은 SW프로젝트를 위해 더 나은 SW프로젝트를 위해
더 나은 SW프로젝트를 위해
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
 
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
 
포티파이 안전한 애플리케이션 구축 및 운영방안
포티파이 안전한 애플리케이션 구축 및 운영방안포티파이 안전한 애플리케이션 구축 및 운영방안
포티파이 안전한 애플리케이션 구축 및 운영방안
 
IEC 61508-3 SW Engineering
IEC 61508-3 SW EngineeringIEC 61508-3 SW Engineering
IEC 61508-3 SW Engineering
 
05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크
 
ALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOps
 
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기
jacoco를 이용한 매뉴얼 테스트의 서버사이드 코드 커버리지 측정하기
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDD
 
Effective application of software safety techniques for automotive embedded c...
Effective application of software safety techniques for automotive embedded c...Effective application of software safety techniques for automotive embedded c...
Effective application of software safety techniques for automotive embedded c...
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
 
모아소프트(MOASOFT) 회사소개서 (20200922) version
모아소프트(MOASOFT) 회사소개서 (20200922) version모아소프트(MOASOFT) 회사소개서 (20200922) version
모아소프트(MOASOFT) 회사소개서 (20200922) version
 
Open source community Building
Open source community BuildingOpen source community Building
Open source community Building
 
ISO26262-6 Software development process (Ver 3.0)
ISO26262-6 Software development process (Ver 3.0)ISO26262-6 Software development process (Ver 3.0)
ISO26262-6 Software development process (Ver 3.0)
 
DevSecOps 그리고 협업 - GitLab
DevSecOps 그리고 협업 - GitLabDevSecOps 그리고 협업 - GitLab
DevSecOps 그리고 협업 - GitLab
 

SonarQube와 함께하는 소프트웨어 품질 세미나 - SonarQube 소개

  • 1. SonarSource SonarQube 소개 지속적인 코드 품질 관리 Version Version 2.1 Date 2018.07 Author CURVC Corp. Type Customer Presentation
  • 2. Copyright(C) 2014-2018 CURVC Corp. All rights reserved Water Leak 걸레질을 할까요? 집에 물이 새고 있습니다. 원인을 찾아서 고쳐야 할까요? 소프트웨어에도 똑같이 적용할 수 있지 않을까요?
  • 3. Copyright(C) 2014-2018 CURVC Corp. All rights reserved ? Traditional approach 전형적인 개발에서는 릴리즈 직전에 정기적인 코드 품질 감사를 수행하고 개발자가 조치를 취합니다. 이러한 접근은 단기간에 강력한 관리로 효과적일 수 있지만, 중장기적으로 일관되게 실패합니다. 팀 외부에서 생성된 새로운 업 무, 늦은 스케줄로 개발자의 학 습 필요 정시 감사 일정으로 늦은 문제 발견, 문제에 따라 프로젝트 일 정 변경 필요 너무 늦은 개발팀의 무관심 개발 프로세스는 개발자 품질 프로세스는 감사자 다른 요구사항으로 각 어플리 케이션 측정, 공통적 품질 요구 사항 적용이 불가능 오너쉽의 부재 이질적인 요구사항
  • 4. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube Concept SonarQube의 지속적인 인스펙션(Continuous Inspection)은 소프트웨어 개발 라이프사이클의 완전한 부분 으로 소프트웨어 품질을 향상시키기 위해 설계된 코드 품질 관리를 위한 새로운 패러다임입니다. 프로젝트 이해관계자를 위한 품질 가시화 지속적인 통합처럼 지속적인 검사를 수행 지속적인 검사 품질 가시화 개발 초기부터 문제를 해결하 여 ROI 향상 알림을 통한 최대한 빠른 해결 과 개발 훈련 조기에 문제 해결 문제 해결의 적시성
  • 5. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube Overview SonarQube는 20개 이상의 프로그래밍 언어의 버그, 코드 스멜, 보안 취약성과 같은 정적 분석과 자동화된 리뷰를 수행하여 코드 품질의 지속적인 인스펙션을 지원하는 플랫폼입니다. 프로젝트 기반 품질 측정 • 프로젝트의 홈에서 품질 게이트, 버그, 취약성, 중 복코드, 단위 테스팅 정보를 한눈에 보여주며 현 재 코드의 품질 측면에서 위치를 확인합니다. • 빌드와 통합을 통해 소스 코드 품질의 변화를 즉 각적으로 확인할 수 있습니다. 다중 언어의 Coding Rules • SonarQube는 Java, C/C++과 같은 인기있는 20 개 이상의 언어의 코딩 룰을 제공합니다. • Checkstyle, Clover, Findbugs, PMD 등 다양한 외 부 분석기에 대한 플러그인을 지원합니다. Quality Profiles • SonarQube는 프로젝트 분석 시 사용되는 규칙 (Rulesets)을 정의할 수 있습니다. • 이 룰셋은 품질 프로파일로 구성되고 조직의 모 든 구성원은 프로젝트에 적용되는 규칙을 확인할 수 있습니다. Quality Gates • 품질 게이트(Quality Gate)를 통해 다양한 조직의 품질 요구사항을 설정할 수 있습니다. • 복잡도, 커버리지, 중복, 보안성, 유지보수성, 사 이즈, 신뢰성, 이슈 등 다양한 항목에 대한 품질 요구사항을 설정합니다.
  • 6. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube Support Languages C# 348 Java 471 PHP 141 TypeScript 110 XML 7 Flex 73 JS 193 Python 54 Web 54 ABAP 84 C++ 328 C 231 PL/SQL 158 TSQL 63 Swift 114 Go 40 Objective-C 226 VB.NET 69 COBOL 172 RPG 57 PL/I 26 VB6 40 Community Edition Developer Edition Enterprise Edition https://rules.sonarsource.com
  • 7. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube Architecture SonarQube Server ComputeEngine WebServer SearchServer SonarQube Scanners … SonarQube Scanner SonarQube Scanner for MSBuild SonarQube Scanner for Maven SonarQube Scanner for Gradle SonarQube Scanner for Ant SonarQube Scanner for VSTS-TFS Databases Processing code analysis report Elastic search Rules SonarQube Plugin Java, C#, C/C++, VB.NET, Objective-C … Crowd Server LDAP Server User Information User Information PostgreSQL MS SQL Oracle MySQL Programming Languages SonarQube는 4개의 컴포넌트로 구성됩니다. 첫번째는 SonarQube 서버, 두번째는 데이터베이스, 세번째는 SonarQube 플러그인, 마지막은 SonarQube Scanner로 구성됩니다. 1 2 3 4 Profiles Quality Gate Issues
  • 8. Copyright(C) 2014-2018 CURVC Corp. All rights reserved 프로젝트 페이지에서는 전체 프로젝트의 현황을 빠르게 파악할 수 있게 해줍니다. 품질 요구사항을 만족 하지 못하는 프로젝트 혹은 특정 이슈들이 발견된 프로젝트를 필터할 수 있습니다. SonarQube > Projects
  • 9. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube는 교차 프로젝트 서비스를 제공합니다. 개발자들은 프로젝트와 상관없이 자신에게 할당된 이 슈리스트를 확인할 수 있습니다. SonarQube > All Issues
  • 10. Copyright(C) 2014-2018 CURVC Corp. All rights reserved Quality Profile Code Metric Coding Rules SonarQube는 코드 품질 관리를 위해 다음과 같이 Rules, Quality Profiles, Code Metric, Quality Gate의 개념이 포함되어 있습니다. SonarQube > Quality Management Rule 1 Rule 2 Rule 3 Rule 4 Rule 5 Rule 6 Rule 7 Rule 8 …… Rule 1 Rule 4 Rule 5 Rule7 복잡도 단위테스트 코드 중복 코멘트 Quality Gate 신뢰성 A 이상 보안성 A 이상 유지보수성 B이상 커버리지 80%이상 중복코드 10%이하 함수 복잡도 10이하 파일 복잡도 10이하 코멘트 70%이상 ……
  • 11. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube > Rule Type Bugs Reliability Vulnerabilities Security Code Smells Maintainability 잠재적인 버그, 런타임에 예상 되는 동작을 가지지 않는 코드 어플리케이션이 잘못된 방식 으로 사용될 수 있는 취약점 모듈성, 이해가능성, 변경가능 성, 테스트 가능성, 재사용성 Poor한 코드 품질은 팀 속도 저하, 어플리케이션 폐기, 프로덕션에서 크래쉬, 나쁜 회사 평판과 같은 다양 한 문제를 일으킵니다. SonarQube는 신뢰성, 보안성, 유지보수성을 향상시키는 솔루션을 제공합니다.
  • 12. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube의 Rules 페이지에서는 SonarQube에 존재하는 모든 룰을 확인할 수 있습니다. 지원 언어별, 타입 별, Tag별, Third Party Rule 등 모든 룰을 확인할 수 있습니다. SonarQube > Rules
  • 13. Copyright(C) 2014-2018 CURVC Corp. All rights reserved Quality Profiles은 Rules의 집합을 정의함으로써 조직이 원하는 코딩 룰에 대한 요구사항을 정의할 수 있기 때문에 SonarQube의 핵심입니다. SonarQube > Profiles 1/2
  • 14. Copyright(C) 2014-2018 CURVC Corp. All rights reserved Quality Profiles은 Rules의 집합을 정의함으로써 조직이 원하는 코딩 룰에 대한 요구사항을 정의할 수 있기 때문에 SonarQube의 핵심입니다. 이를 통해 원하는 Rules을 추가하거나 제외할 수 있습니다. SonarQube > Profiles 2/2
  • 15. Copyright(C) 2014-2018 CURVC Corp. All rights reserved Quality Gate는 어플리케이션을 릴리즈 하기 전에 어플리케이션이 품질 요구사항을 지키고 있는지 확인하 는 기준 목록입니다. Quality Gate를 통해 어플리케이션의 출시 여부를 결정할 수 있습니다. SonarQube > Quality Gate
  • 16. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube > Rating Model Severity에 따라 등급 표시 • A = 0 • B = 1 이상의 Minor 존재 시 • C = 1 이상의 Major 존재 시 • D = 1 이상의 Critical 존재 시 • E = 1 이상의 Blocker 존재 시 유지보수 Rating에 따라 등급 표시 • A = 5% 이하 • B = 6~10% • C = 11~20% • D = 21~50% • E = 50%~ 수정비용 / 개발비용
  • 17. Copyright(C) 2014-2018 CURVC Corp. All rights reserved 코드 품질 관리를 위해 권장되는 접근방법은 무엇일까요? 물이 새는 것을 관리하고 바닥을 청소하기 전에 물이 새는 것을 수리하세요. SonarQube > The Water Leak Paradigm
  • 18. Copyright(C) 2014-2018 CURVC Corp. All rights reserved Project의 Issues 페이지는 프로젝트에 존재하는 이슈들을 보여줍니다. 개발자들은 자신에게 할당된 프로 젝트 이슈를 확인할 수 있습니다. SonarQube > Project Issues
  • 19. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube는 여러 위치에서 발견된 이슈를 코드 경로 상에 표시하고 쉽게 네비게이션하여 찾을 수 있게 도와줍니다. SonarQube > Issues
  • 20. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube는 발견된 이슈의 세부적인 정보를 제공합니다. 이슈에 대한 설명과 함께 잘못된 예제와 코딩 룰을 준수하는 예제를 확인할 수 있습니다. SonarQube > Issues
  • 21. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube의 Measure에서는 Reliability, Security, Maintainability, Tests, Duplications, Complexity, Size, Issues 등 다양한 Metric을 정의하고 측정하고 있습니다. SonarQube > Metric 1/3 Name Description Bugs 버그 수 New Bugs 새로운 버그 수 Reliability Rating A = 0 버그 B = 1 이상의 Minor 버그 C = 1 이상의 Major 버그 D = 1 이상의 Critical 버그 E = 1 이상의 Blocker 버그 Reliability remediation effort 버그 이슈를 수정하는데 소요 되는 시간(분 단위 저장) Reliability remediation effort on new code 새로운 코드에서 버그 이슈를 수정하는데 소요되는 시간 Name Description Vulnerabilities 취약점 수 New Vulnerabilities 새로운 취약점 수 Security Rating A = 0 취약성 B = 1 이상의 Minor 취약성 C = 1 이상의 Major 취약성 D = 1 이상의 Critical 취약성 E = 1 이상의 Blocker 취약성 Security remediation effort 취약성 이슈를 수정하는데 소 요되는 시간(분 단위 저장) Security remediation effort on new code 새로운 코드에서 취약성 이슈 를 수정하는데 소요되는 시간 Reliability Security
  • 22. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube의 Measure 에서는 Reliability, Security, Maintainability, Tests, Duplications, Complexity, Size, Issues 등 다양한 Metric을 정의하고 측정하고 있습니다. SonarQube > Metric 2/3 Name Description Code Smells 코드 스멜 수 New Code Smells 새로운 코드 스멜 수 Maintainability Rating A = 5% 이하 B = 6~10% C = 11~20% D = 21~50% E = 50%~ Technical Debt 유지보수 이슈를 수정하는데 소요되는 시간(분 단위 저장) Technical Debt on new code 새로운 코드에서 유지보수 이 슈를 수정하는데 소요되는 시 간 Technical Debt Ratio 수정 비용 / 개발 비용 코드 한 줄 개발 비용은 0.06일 Technical Debt Ratio on new code 새로운 코드에서 Technical Debt Ratio Name Description Condition Coverage Condition coverage = (CT + CF) / (2*B) Coverage Coverage = (CT + CF + LC)/(2*B + EL) Line Coverage Line coverage = LC / EL Unit tests 단위 테스트 수 Unit test duration 단위 테스트 수행 시간 Unit test errors 실패된 단위 테스트 수 Unit test failures 예상치 못한 실행으로 실패된 단위 테스트 수 Unit test success density(%) 테스트 성공 밀도 = (Unit tests - (Unit test errors + Unit test failures)) / Unit tests * 100 Maintainability Tests
  • 23. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube의 Measure 에서는 Reliability, Security, Maintainability, Tests, Duplications, Complexity, Size, Issues 등 다양한 Metric을 정의하고 측정하고 있습니다. SonarQube > Metric 2/3
  • 24. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube의 Measure 에서는 Reliability, Security, Maintainability, Tests, Duplications, Complexity, Size, Issues 등 다양한 Metric을 정의하고 측정하고 있습니다. SonarQube > Metric 3/3 Name Description Classes 클래스의 수 Comment lines 주석 혹은 주석 처리된 코드 수 Comments (%) 주석 밀도 = 주석 줄 / (코드 줄 + 주석 줄) * 100 Directories 디렉토리 수 Files 파일 수 Lines 전체 라인수 Lines of code 문자가 하나이상 포함된 물리 적 라인 수 Functions 함수 수 Statements 문장 수 Name Description Complexity 코드의 경로 수를 기반으로 계 산된 복잡도 Cognitive Complexity 더 좋은 복잡도 측정법 Size Complexity Name Description Duplicated blocks 중복된 라인 블록 수 Duplicated files 중복된 파일 수 Duplicated lines 중복된 라인 수 Duplicated lines(%) 중복 밀도 = 중복된 라인 / 라인 수 * 100 Duplications
  • 25. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube의 Mesure에서는 Reliability, Security, Maintainability, Tests, Duplications, Complexity, Size, Issues등 다양한 Metric을 정의하고 측정하고 있습니다. SonarQube > Metric 3/3
  • 26. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube의 Project Code에서는 폴더 구조에 해당하는 코드의 LOC, Bugs, Vulnerabilities, Code Smells, Coverage, Duplication을 확인할 수 있습니다. SonarQube > Code
  • 27. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube의 Project Activity는 SonarQube 측정 지표의 트랜드를 확인할 수 있습니다. 기본적으로 Issues, Coverage, Duplication을 보여주며, Custom을 통해 측정한 모든 데이터의 트랜드를 확인할 수 있습니다. SonarQube > Activity
  • 28. Copyright(C) 2014-2018 CURVC Corp. All rights reserved Branch 기반으로 개발을 한다면 SonarQube에서 Short-lived와 Long-lived 코드 브랜치의 품질을 추적할 수 있습니다. 안정성이 보장된 코드만이 master로 merge될 수 있습니다. SonarQube > Branch analysis Developer Edition
  • 29. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube Portfolios를 통해 팀별 혹은 제품별로 원하는 형태의 포트폴리오를 구성할 수 있습니다. 품질 게이트를 실패한 프로젝트의 비율은 Releaseability로 표시됩니다. 이를 통해 릴리즈를 결정할 수 있습니다. SonarQube > Portfolios 1/2 Enterprise Edition
  • 30. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube Portfolios를 통해 팀별 혹은 제품별로 원하는 형태의 포트폴리오를 구성할 수 있습니다. 품질 게이트를 실패한 프로젝트의 비율은 Releaseability로 표시됩니다. 이를 통해 릴리즈를 결정할 수 있습니다. SonarQube > Portfolios 2/2 Enterprise Edition
  • 31. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube > Integration SonarQube는 인기있는 Build Systems, CI Engine, IDE와 통합을 제공하며, SonarQube의 Web API와 Web Hook 을 통해 원하는 시스템과의 통합을 수행할 수 있습니다. Build Systems과 통합 • 표준 빌드 시스템과 강력하게 통합되어 Zero- Configuration을 제공합니다. • Maven, MSBuild, Gradle, ANT와 같은 인기있는 빌드 시스템과 무설정 혹은 약간의 설정으로 프 로젝트를 빠르게 스캔할 수 있습니다. CI Engines과 통합 • 빌드 시스템과 쉬운 통합은 CI 엔진과도 쉽게 통 합됨을 의미합니다. • Bamboo, Travis CI, Jenkins, AppVeyor, Team Foundation Server, TeamCity와 같은 다양한 CI 엔진에서 원클릭 만으로 SonarQube를 연동할 수 있습니다. IDE와 통합 • 개발자는 자신이 좋아하는 IDE에서 코드 품질에 대한 피드백을 얻을 수 있습니다. • SonarLint는 이클립스, Intelli J, 비주얼 스튜디오, 비주얼 스튜디오 코드, Atom과 같은 IDE에서 실 시간으로 코드 품질에 대한 피드백을 제공합니다. Web API와 Web Hook • SonarQube의 웹 API를 사용하여 SonarQube를 자동적으로 프로비저닝하거나 BI에 원하는 데이 터를 제공하거나 모니터링 할 수 있습니다. • 표준 웹 훅(Webhook) 메커니즘을 사용하여 채팅 방과 같은 외부 시스템에 알림을 수행할 수 있습 니다.
  • 32. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube > Marketplace SonarQube의 Marketplace를 통해 SonarQube 기능 향상을 지원하는 75개의 플러그인을 다운로드 받거나 설치할 수 있으며, 이러한 플러그인은 추후 추가될 예정입니다.
  • 33. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarQube Edition & Event Community Edition Developer Edition Enterprise Edition Data Center Edition ✓ SonarQube & 60+ 플러그인 ✓ SonarLint ✓ 10 Languages ✓ Community 포함 ✓ 브랜치 분석 ✓ SonarLint 알림 ✓ 17 Languages ✓ 하나의 테스팅 및 스테이징 인스턴스 제공 ✓ Developer 포함 ✓ 포트폴리오 관리 ✓ Executive 리포팅 ✓ 21 Languages ✓ 전문가 기술 지원 포함 ✓ Enterprise 포함 ✓ 컴포넌트 리더던시 ✓ 데이터 무결성 ✓ 3개의 추가적인 라 이센스 * 각 분석 된 프로젝트의 LOC(Line Of Code)를 합산하여 계산 20만원부터 2,100만원부터 13,500만원부터 85,000 회사에서 사용중 개발자를 위한 버전 엔터프라이즈를 위해 고가용성을 위한 Free SonarQube에 관심있으신 모든 분에게 평가판 라이선스를 제공합니다.
  • 34. Copyright(C) 2014-2018 CURVC Corp. All rights reserved 감사합니다. Thank you! Contact curvc@curvc.com 02-6245-5478
  • 35. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarCFamily for C/C++ C++ C Rules 316 Rules 226 Bugs 69 Bugs 56 Code Smells 245 Code Smells 168 Vulnerabilities 2 Vulnerabilities 2 CWE 27 CWE 26 SANS Top 25 2 SANS Top 25 2 MISRA 119 MISRA 111 CERT 89 CERT 69 • Memory Leak • Dead Code • Logic Flow Error • Dereference of Null Pointers • Coding Conventions • Error Handling • Memory Leak • Dead Code • Logic Flow Error • Dereference of Null Pointers • Coding Conventions • Error Handling
  • 36. Copyright(C) 2014-2018 CURVC Corp. All rights reserved SonarCFamily for C/C++ • Supported Compilers, Language Standards and Operating Systems • Any version of Clang, GCC and Microsoft C/C++ compilers • Any version of Intel compiler for Linux and OS X • ARM5 and ARM6 compilers • Compilers based wholly on GCC including for instance Linaro GCC and WindRiver GCC are also supported • C89, C99, C11, C++03, C++11 and C++14 standards • Microsoft Component Extensions for runtime platforms : C++/CLI and C++/CX • GNU extensions • Microsoft Windows, Linux and Mac OS X for runtime environment • Metrics • Code coverage by tests: SonarCFamily for C/C++ support the import of MS visual studio and GCOV coverage reports along with the import of CPP unit report. • Custom Rules • SonarCFamily for C/C++ doesn’t yet provide the ability to write custom rules. • CWE compatibility • SonarCFamily for C/C++ is officially registered as CWE compatible.