SlideShare a Scribd company logo
1 of 10
SonarQube 로
Unity 프로젝트 관리
160612 에그
SonarQube
• http://www.sonarqube.org/
• 코드 품질 관리 플랫폼
• 오픈소스
설치 방법
• Sonar cube로 Unity3D의 소스를 가시화 해보자.
• http://www.wolfpack.pe.kr/887
• Mac OS X に SonarQube 導入 - UnityのC#コーディング規約
チェック
• http://kenzo0107.hatenablog.com/entry/2014/06/22/024501
• 웹서버는 SonarQube 자체에 포함되어 있어 설치 안 해도 됨
• 단순히 살펴보기 목적이라면 DB 설치 안 해도 됨
• 내장된 DB 사용가능
• SonarQube 업그레이드 시 내장 DB 업그레이드는 지원 안될 수 있음
• Runner -> Scanner 로 툴이 바뀐 듯 함
구성
• SonarQube
• 분석 결과 관리
• SonarQube Scanner
• 코드 분석
SonarQube 로 볼 수 있는 정보
Code Smell
• 오류를 발생시키는 코드는 아니지만
수정이 권장되는 코드
• 이슈별로 대략 산정된 수정 소요시
간이 있음
• 이를 합쳐서 빚(Debt)을 청산하는데
총 얼마나 걸리는지 보여주는 기능
도 있음
SonarQube + Unity 편리한 점
• 공짜
• 쓰기 쉬움
• 유니티 프로젝트 코드 품질 관리하는 툴을 이것 말고는 못찾겠
음
SonarQube + Unity 불편한 점
• SonarQube 에서 지정한 RuleSet 을 VS에 적용시킬 수 있는
SonarLint 가 있긴 하지만, 프로젝트를 다시 열 때 마다 설정이
사라짐
• 유니티 내장 NUnit 이용한 유닛테스트 결과와 SonarQube 연동
시키는 방법 잘 모르겠음
• 유니티 특화된 RuleSet 지정 방법 알아봐야 함
• 예) Loop 안에서 GetComponents 사용하지 않기
코드 품질 관리 장점
• 기계가 할 수 있는 건 기계가 해준다.
• 제일 중요
• 문제가 얼마나 많은지 시각화해서 경각심 일깨워준다.
• 출시가 3개월 남았는데 빚이 6개월 치!
• 문제점이 수치로 표현되므로 퀘스트 하듯 코드 수정하게 됨
• 은근 중독성 있음
코드 품질 관리 주의점
• 최초 도입 시 프로젝트에서 무의미한 Rule 솎아내는 작업 필요
• Awake 같이 유니티에서 자동으로 호출하는 함수를 ‘불리지 않는 함수
‘ 로 취급함
• 코드적으로는 수정 필요할 수 있지만 현실적으로 매우 번거로워지는
경우
• 문제 수치 줄이는데 중독되어 리팩토링 주화입마에 빠질 수 있
음
• 품질 관리 시스템 도입만으로 품질이 급상승하지는 않는다.
• ‘기계가 찾을 수 있는‘ 문제만 찾아짐
• 역시 결국은 사람이 잘 설계해야 됨

More Related Content

What's hot

Concurrent programming
Concurrent programmingConcurrent programming
Concurrent programming
Byeongsu Kang
 
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
NAVER D2
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임
codenavy
 
[C5]deview 2012 nodejs
[C5]deview 2012 nodejs[C5]deview 2012 nodejs
[C5]deview 2012 nodejs
NAVER D2
 
Design pattern 옵저버
Design pattern 옵저버Design pattern 옵저버
Design pattern 옵저버
Sukjin Yun
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
QooJuice
 
함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍
QooJuice
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션
QooJuice
 

What's hot (20)

Advanced nGrinder 2nd Edition
Advanced nGrinder 2nd EditionAdvanced nGrinder 2nd Edition
Advanced nGrinder 2nd Edition
 
포스트모템디버깅과 프로세스 덤프 실전
포스트모템디버깅과 프로세스 덤프 실전포스트모템디버깅과 프로세스 덤프 실전
포스트모템디버깅과 프로세스 덤프 실전
 
오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리
 
practical perf testing - d2startup
practical perf testing - d2startuppractical perf testing - d2startup
practical perf testing - d2startup
 
Concurrent programming
Concurrent programmingConcurrent programming
Concurrent programming
 
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
[Hello world 오픈세미나]n grinder helloworld발표자료_저작권free
 
병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임병렬 프로그래밍 패러다임
병렬 프로그래밍 패러다임
 
[C5]deview 2012 nodejs
[C5]deview 2012 nodejs[C5]deview 2012 nodejs
[C5]deview 2012 nodejs
 
Log4j
Log4jLog4j
Log4j
 
Design pattern 옵저버
Design pattern 옵저버Design pattern 옵저버
Design pattern 옵저버
 
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드
Exception log practical_coding_guide, 예외와 로그 코딩 실용 가이드
 
테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템테라로 살펴본 MMORPG의 논타겟팅 시스템
테라로 살펴본 MMORPG의 논타겟팅 시스템
 
함수형 프로그래밍
함수형 프로그래밍함수형 프로그래밍
함수형 프로그래밍
 
멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면멸종하는 공룡이 되지 않으려면
멸종하는 공룡이 되지 않으려면
 
리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션리플렉션과 가비지 컬렉션
리플렉션과 가비지 컬렉션
 
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
게임서버프로그래밍 #4 - 멀티스레드 프로그래밍
 
JMeter
JMeterJMeter
JMeter
 
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
[HYSS 2016] 쉽고 빠르게 시작하는 Volatility Plugin 개발
 
Concurrent programming 2
Concurrent programming 2Concurrent programming 2
Concurrent programming 2
 
게임서버프로그래밍 #2 - IOCP Adv
게임서버프로그래밍 #2 - IOCP Adv게임서버프로그래밍 #2 - IOCP Adv
게임서버프로그래밍 #2 - IOCP Adv
 

Viewers also liked

Viewers also liked (20)

Sonar 설치
Sonar 설치Sonar 설치
Sonar 설치
 
2015.03.25 테크니컬 세미나 - SonarQube를 활용한 코드 품질 시각화(김모세)
2015.03.25 테크니컬 세미나 - SonarQube를 활용한 코드 품질 시각화(김모세)2015.03.25 테크니컬 세미나 - SonarQube를 활용한 코드 품질 시각화(김모세)
2015.03.25 테크니컬 세미나 - SonarQube를 활용한 코드 품질 시각화(김모세)
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Sonarqube 20160509
Sonarqube 20160509Sonarqube 20160509
Sonarqube 20160509
 
Tracking and improving software quality with SonarQube
Tracking and improving software quality with SonarQubeTracking and improving software quality with SonarQube
Tracking and improving software quality with SonarQube
 
코드네임 이것저것
코드네임 이것저것코드네임 이것저것
코드네임 이것저것
 
SonarQube
SonarQubeSonarQube
SonarQube
 
Code Quality, Standards and Best Practices, Discuss
Code Quality, Standards and Best Practices, DiscussCode Quality, Standards and Best Practices, Discuss
Code Quality, Standards and Best Practices, Discuss
 
DevOps – SonarQube
DevOps – SonarQubeDevOps – SonarQube
DevOps – SonarQube
 
SonarQube - Should I Stay or Should I Go ?
SonarQube - Should I Stay or Should I Go ? SonarQube - Should I Stay or Should I Go ?
SonarQube - Should I Stay or Should I Go ?
 
Track code quality with SonarQube
Track code quality with SonarQubeTrack code quality with SonarQube
Track code quality with SonarQube
 
The story of SonarQube told to a DevOps Engineer
The story of SonarQube told to a DevOps EngineerThe story of SonarQube told to a DevOps Engineer
The story of SonarQube told to a DevOps Engineer
 
Sonar
SonarSonar
Sonar
 
SonarQube Overview
SonarQube OverviewSonarQube Overview
SonarQube Overview
 
SONAR
SONARSONAR
SONAR
 
Java Source Code Analysis using SonarQube
Java Source Code Analysis using SonarQubeJava Source Code Analysis using SonarQube
Java Source Code Analysis using SonarQube
 
Sonar Metrics
Sonar MetricsSonar Metrics
Sonar Metrics
 
C++과 TDD
C++과 TDDC++과 TDD
C++과 TDD
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 
SonarQube - The leading platform for Continuous Code Quality
SonarQube - The leading platform for Continuous Code QualitySonarQube - The leading platform for Continuous Code Quality
SonarQube - The leading platform for Continuous Code Quality
 

Similar to SonarQube 로 Unity 프로젝트 관리

윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
devCAT Studio, NEXON
 
Component configurator
Component configuratorComponent configurator
Component configurator
scor7910
 

Similar to SonarQube 로 Unity 프로젝트 관리 (20)

Oracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker OverviewOracle Container Cloud Service & Docker Overview
Oracle Container Cloud Service & Docker Overview
 
201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service201702-Oracle Container Cloud Service
201702-Oracle Container Cloud Service
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
윤석주, 인하우스 웹 프레임워크 Jul8 제작기, NDC2018
 
버그 트래킹 시스템 Mantis의 사용 그리고 예제
버그 트래킹 시스템 Mantis의 사용 그리고 예제버그 트래킹 시스템 Mantis의 사용 그리고 예제
버그 트래킹 시스템 Mantis의 사용 그리고 예제
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기하드웨어 스타트업의 소프트웨어 이야기
하드웨어 스타트업의 소프트웨어 이야기
 
무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례무정지&무점검 서버 개발과 운영 사례
무정지&무점검 서버 개발과 운영 사례
 
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
[네이버오픈소스세미나] egjs-view360 개발기 - 김희재
 
[123] electron 김성훈
[123] electron 김성훈[123] electron 김성훈
[123] electron 김성훈
 
Source To URL Without Dockerfile
Source To URL Without DockerfileSource To URL Without Dockerfile
Source To URL Without Dockerfile
 
유지보수를 고려한 SW 개발
유지보수를 고려한 SW 개발유지보수를 고려한 SW 개발
유지보수를 고려한 SW 개발
 
오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼오픈 소스 사용 매뉴얼
오픈 소스 사용 매뉴얼
 
회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기회사에서 새로운 기술_적용하기
회사에서 새로운 기술_적용하기
 
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
글로벌 게임 플랫폼에서 무정지, 무점검 서버 개발과 운영 사례
 
Component configurator
Component configuratorComponent configurator
Component configurator
 
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
 
Openstack Datadog.pptx
Openstack Datadog.pptxOpenstack Datadog.pptx
Openstack Datadog.pptx
 
장고로 웹서비스 만들기 기초
장고로 웹서비스 만들기   기초장고로 웹서비스 만들기   기초
장고로 웹서비스 만들기 기초
 
[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)[넥슨] kubernetes 소개 (2018)
[넥슨] kubernetes 소개 (2018)
 

More from EG Lim

More from EG Lim (9)

칼리굴라 오버도즈의 UE4 데이터 이식 안내서
칼리굴라 오버도즈의 UE4 데이터 이식 안내서칼리굴라 오버도즈의 UE4 데이터 이식 안내서
칼리굴라 오버도즈의 UE4 데이터 이식 안내서
 
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
메카 액션 게임 『DAEMON X MACHINA』 신념과 피와 강철의 개발사례
 
빌드 좀 깨먹지 마라!
빌드 좀 깨먹지 마라!빌드 좀 깨먹지 마라!
빌드 좀 깨먹지 마라!
 
MD5 이것저것
MD5 이것저것MD5 이것저것
MD5 이것저것
 
FlatBuffers 를 이용한 안드로이드에서의 페이스북 성능 향상
FlatBuffers 를 이용한 안드로이드에서의 페이스북 성능 향상FlatBuffers 를 이용한 안드로이드에서의 페이스북 성능 향상
FlatBuffers 를 이용한 안드로이드에서의 페이스북 성능 향상
 
Elo 평점 시스템
Elo 평점 시스템Elo 평점 시스템
Elo 평점 시스템
 
디미터의 법칙
디미터의 법칙디미터의 법칙
디미터의 법칙
 
네이밍 관련 이것저것
네이밍 관련 이것저것네이밍 관련 이것저것
네이밍 관련 이것저것
 
상속 관련 이것저것
상속 관련 이것저것상속 관련 이것저것
상속 관련 이것저것
 

Recently uploaded

Recently uploaded (7)

JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 
JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 

SonarQube 로 Unity 프로젝트 관리

  • 1. SonarQube 로 Unity 프로젝트 관리 160612 에그
  • 2. SonarQube • http://www.sonarqube.org/ • 코드 품질 관리 플랫폼 • 오픈소스
  • 3. 설치 방법 • Sonar cube로 Unity3D의 소스를 가시화 해보자. • http://www.wolfpack.pe.kr/887 • Mac OS X に SonarQube 導入 - UnityのC#コーディング規約 チェック • http://kenzo0107.hatenablog.com/entry/2014/06/22/024501 • 웹서버는 SonarQube 자체에 포함되어 있어 설치 안 해도 됨 • 단순히 살펴보기 목적이라면 DB 설치 안 해도 됨 • 내장된 DB 사용가능 • SonarQube 업그레이드 시 내장 DB 업그레이드는 지원 안될 수 있음 • Runner -> Scanner 로 툴이 바뀐 듯 함
  • 4. 구성 • SonarQube • 분석 결과 관리 • SonarQube Scanner • 코드 분석
  • 5. SonarQube 로 볼 수 있는 정보
  • 6. Code Smell • 오류를 발생시키는 코드는 아니지만 수정이 권장되는 코드 • 이슈별로 대략 산정된 수정 소요시 간이 있음 • 이를 합쳐서 빚(Debt)을 청산하는데 총 얼마나 걸리는지 보여주는 기능 도 있음
  • 7. SonarQube + Unity 편리한 점 • 공짜 • 쓰기 쉬움 • 유니티 프로젝트 코드 품질 관리하는 툴을 이것 말고는 못찾겠 음
  • 8. SonarQube + Unity 불편한 점 • SonarQube 에서 지정한 RuleSet 을 VS에 적용시킬 수 있는 SonarLint 가 있긴 하지만, 프로젝트를 다시 열 때 마다 설정이 사라짐 • 유니티 내장 NUnit 이용한 유닛테스트 결과와 SonarQube 연동 시키는 방법 잘 모르겠음 • 유니티 특화된 RuleSet 지정 방법 알아봐야 함 • 예) Loop 안에서 GetComponents 사용하지 않기
  • 9. 코드 품질 관리 장점 • 기계가 할 수 있는 건 기계가 해준다. • 제일 중요 • 문제가 얼마나 많은지 시각화해서 경각심 일깨워준다. • 출시가 3개월 남았는데 빚이 6개월 치! • 문제점이 수치로 표현되므로 퀘스트 하듯 코드 수정하게 됨 • 은근 중독성 있음
  • 10. 코드 품질 관리 주의점 • 최초 도입 시 프로젝트에서 무의미한 Rule 솎아내는 작업 필요 • Awake 같이 유니티에서 자동으로 호출하는 함수를 ‘불리지 않는 함수 ‘ 로 취급함 • 코드적으로는 수정 필요할 수 있지만 현실적으로 매우 번거로워지는 경우 • 문제 수치 줄이는데 중독되어 리팩토링 주화입마에 빠질 수 있 음 • 품질 관리 시스템 도입만으로 품질이 급상승하지는 않는다. • ‘기계가 찾을 수 있는‘ 문제만 찾아짐 • 역시 결국은 사람이 잘 설계해야 됨