SonarQube
SonarQube(소나큐브)는 소스 코드의 품질을 분석하고 관리하기 위한 오픈 소스 정적 코드 분석 플랫폼입니다.
소스 코드 정적 분석을 통해 개발자가 직접 작성한 코드의 버그, 취약점, 저품질 코드를 탐지하고 보고하며 시각화합니다.
개발자는 이를 통해 코드의 품질을 향상시키고 유지 보수성을 높일 수 있습니다.
개발자는 SonarQube를 활용하여 클린 코드를 지향한 개발을 할 수 있습니다.
정적 분석 도구 (Static Code Analysis Tools)
- 컴파일 단계에서 수행하며 SW 코드의 정적 특성을 분석하여 버그, 보안 취약점, 성능 문제 등을 발견하는 도구.
- 소스 코드의 구조, 흐름, 변수 등을 분석하여 잠재적 문제를 식별하고 소프트웨어를 개선하며 코드의 안전성, 신뢰성, 효율성을 향상시킨다.
동적 분석 도구(Dynamic Code Analysis Tools)
- 런타임 단계에서 수행하며 메모리 사용, CPU 사용, 네트워크 트래픽 등을 모니터링하고 분석
- 애플리케이션의 성능, 메모리 누수, 보안 취약점 등을 분석하여 해결에 도움을 주는 지표를 제공
SonarQube가 내 코드를 분석하는 과정
1. 소스코드 수집
소나큐브가 분석 대상이 되는 소스 코드를 수집합니다.
2. 소스 코드 준비
수집된 소스 코드를 분석하기 쉬운 형식으로 변환시킵니다.
이 단계에서 소스 코드를 토큰화 하고, 구문을 분석하여 코드의 구조를 이해할 수 있는 형태로 변환합니다.
3. 정적 분석 수행
- 구조적 분석 (Structural Analysis)
- 코드의 구조를 분석하여 클래스, 함수, 변수 등을 인식하고 이들 간 관계를 파악합니다.
- 이 과정에서 코드의 복잡성이나 구조적 결함을 평가합니다.
- 코드 흐름 분석 (Control Flow Analysis)
- 코드의 제어 흐름을 분석하여 조건문, 반복문, 함수 호출 등을 추적하고 코드 실행 경로를 이해합니다.
- 이를 통해 잠재적 실행 오류나 비정상적인 흐름을 찾아냅니다.
- 의존성 분석 (Dependency Analysis) :
- 코드 간 의존성을 분석하여 외부 라이브러리, 모듈, 패키지와의 상호 작용을 확인합니다.
- 이를 기반으로 코드의 안정성을 평가합니다.
- 코드 품질 평가 (Quality Evaluation) :
- 코드가 코딩 표준을 준수하는지, 코드 중복이 있는지, 복잡성이 적절한 수준인지 등을 평가하여 코드의 품질을 측정합니다.
4. 문제 및 취약점 식별
코드의 문제점과 잠재적 보안 취약점을 식별합니다.
ex> 코드 중복, 널 포인터 참조, 민감한 데이터 누출, 보안 취약점 등
5. 기록 보고
분석을 완료한 후 상세한 분석 결과를 보고서를 통해 제공하고 문제의 위치, 원인, 권장 사항 등을 포함하여 개발자에게 제공합니다.
SonarQube의 특징
1. 정적 코드 분석 지원
- 정적 코드 분석을 통해 코드의 품질과 보안을 평가
- 버그, 보안 취약점, 코드 커버리지, 중복 코드 등 식별
2. 대시보드 및 보고서 지원
시각적으로 보기 편한 대시보드 및 보고서를 제공합니다.
3. 여러가지 프로그래밍 언어 지원
Java, Python, JavaScript, C# 등 다양한 언어를 지원합니다.
4. CI (Continuous Integration) 지원
Jenkins, GitHub Actions와 같은 CI/CD 도구와 연동하여 코드 변경 사항을 자동으로 분석하고 피드백을 제공받을 수 있습니다.
참조
https://adjh54.tistory.com/381#2)%20SonarQube%20%EC%A3%BC%EC%9A%94%20%ED%8A%B9%EC%A7%95-1
'[AWS-FRF] > CICD' 카테고리의 다른 글
[중요][AWS][터널링] 크롬/엣지 http - https 자동강제 전환(리다이렉트)해제 방법!! (2) | 2024.12.04 |
---|---|
[참고][AWS][Jenkins] 젠킨스 버전 업데이트하기 (feat.rockylinux) (7) | 2024.11.19 |
[참고][AWS] Sonarqube Ruleset import, export 하기!! (52) | 2024.10.08 |
[중요2][AWS][JENKINS] HOW TO PUSH WAR FILE TO S3 BUCKET THROUGH JENKINS !! (젠킨스 S3 IAM 정책 설정 포함) (20) | 2024.09.19 |
[중요][AWS] ERR_PNPM_OUTDATED_LOCKFILE Cannot install with "frozen-lockfile" because pnpm-lock.yaml 해결!! (15) | 2024.09.13 |
[중요][AWS] npm ERR! Missing script: "build:dev" 에러 해결!! (14) | 2024.09.13 |
[중요][AWS] 젠킨스 Build step 'Invoke Gradle script' marked build as failure 에러 발생 해결!! (14) | 2024.09.13 |
[참고][Git] 원본 저장소 fork(포크) 및 동기화!! (11) | 2024.09.12 |
댓글