소나(Sonar, SOund Navigation And Ranging)는 음파에 의해 수중목표의 방위 및 거리를 알아내는 장비를 의미하며 음파탐지기, 음향탐지기 혹은 음탐기로도 불린다.
소나큐브(SonarQube, 이전 이름: 소나/Sonar)는 20개 이상의 프로그래밍 언어에서 버그, 코드 스멜, 보안 취약점을 발견할 목적으로 정적 코드 분석으로 자동 리뷰를 수행하기 위한 지속적인 코드 품질 검사용 오픈 소스 플랫폼이다. 소나소스(SonarSource)가 개발하였다.
개발을 하다 보면 내 소스에 문제가 있는지 분석을 하고 싶을 때가 있다.
이럴 때 소나큐브를 통해 소스 분석을 할 수 있다.
// 소나큐브 설치
the home of clean code
Sonar’s industry leading solution enables developers and development teams to write clean code and remediate existing code organically.
www.sonarsource.com

// 소나큐브 실행
1.압축을 푼 디렉터리로 이동해서 소나큐브를 실행한다.
2.소나큐브가 실행되면 어드민에 접속이 가능하다.
http://localhost:9000/
초기계정: admin/admin
3. Create new project 버튼을 눌러서 프로젝트를 추가할 수 있다.
Azure, Bitbucket, GitHub, GitLab 등을 추가할 수 있고, 로컬 소스도 가능하다.
// 소나스캐너 설치 및 실행
1.소나큐브를 사용하는 방법은 여러 가지가 있다. 젠킨스 연동, IDE 플러그인 연동, 소나스캐너 등. 이번엔 소나스캐너를 사용해 보겠다.
2.https://docs.sonarqube.org/latest/analysis/scan/sonarscanner/
공식문서에 접속해서 설치 파일을 다운로드할 수 있다. 소나큐브와 마찬가지로 zip파일, 도커 이미지 등을 사용 가능하다.
3.zip 파일을 풀고 bin 폴더 아래 sonar-scanner.bat 파일을 통해 소나스캐너를 실행할 수 있다. bin 폴더를 path에 등록해 두면 편하게 사용 가능하다.
- 실행 명령어 형식
sonar-scanner -Dsonar.projectKey=myproject -Dsonar.sources=src1
// 소나큐브 분석
- 소나큐브 분석 페이지
1.소나 스캐너를 실행한 뒤 어드민에 접속하면 분석 결과를 확인할 수 있다.
2.버그, 취약점, 보안 위험성, 코드 스멜, 커버리지, 코드 중복 등의 항목의 분석결과가 나온다.
3.A,B,C 등의 등급이 표시되고 A가 좋은 등급, E가 나쁜 등급이다.
- 보안 위험성 분석 페이지
1.보안 위험성 분석페이지를 보면 http 프로토콜로 통신하는 것에 대해 경고하는 것을 볼 수 있다.
2.해당 소스의 위치, 라인이 상세하게 나오고 간단하게 조치 방법도 가이드를 해준다.
3.어디에, 무엇을, 취약한 부분, 수정 방법 등이 탭으로 구분되어서 설명이 되어있다.
4.How can I fix it 탭에서 취약점에 대한 수정 방법을 자세하게 설명하고 있다.
- 측정 페이지
1.Measures 탭을 눌러서 항목별로 분석 결과를 볼 수 있다.
2.불필요한 화이트 스페이스, 한 줄에 120자 이상의 긴 코드 등도 나쁜 코드로 진단한 것을 볼 수 있다. 꽤 자세하게 진단을 한다.
3.각 항목마다 등급으로 표시가 되어있어서 취약한 곳이 어디인지 파악하기에 용이하다.
- 코드 분석 페이지
1.Code 탭을 눌러서 파일별로 분석 결과를 볼 수 있다.
2.분석한 항목들을 파일별로 보기에 적합하다.
3.Coverage 항목은 테스트코드를 얼마나 작성했는지에 관한 지표이다.
// 사용 후기
코드 분석 프로그램인 소나큐브의 장단점을 확인하였고,
취약점이 나온 코드에 대해서 수정 가이드가 나온 점이 좋았다.
• 장점
오픈소스.
다양한 언어 지원.
자세한 분석 페이지 제공.
• 단점
한국어 미지원.
한 번에 하나의 언어만 분석 가능.
잘 활용하기 위해선 러닝커브가 다소 있음.
'개발' 카테고리의 다른 글
phpstorm 화면 깨짐 오류 (0) | 2023.05.25 |
---|---|
Apache Options (0) | 2023.01.19 |
React 와 Vue 비교 (0) | 2021.12.19 |
리액트 특징 (4) | 2021.12.18 |
AWS 이용 후기 (0) | 2020.12.08 |
댓글