블로그 게시물

소나큐브 서버를 활용한 코드 커버리지 이해 및 활용

Manish Kapur photo

Manish Kapur

수석 이사, 제품 및 솔루션

Date

  • SonarQube
  • SonarQube Cloud
  • SonarQube Server

목차

  • Chevron right icon서론
  • Chevron right icon코드 커버리지가 무엇인가요?
  • Chevron right iconSonarQube 서버에서 코드 커버리지 설정하기
  • Chevron right iconSonarQube 서버에서 코드 커버리지 분석
  • Chevron right icon코드 커버리지 지표 해석
  • Chevron right icon소나큐브 서버를 활용한 코드 커버리지 분석의 이점
  • Chevron right icon소나 및 코드 커버리지
SonarQube를 무료로 사용해 보세요

소개

코드를 철저히 테스트하면 실패한 테스트가 기능적 문제를 신속하게 식별해 주므로 자신 있게 업데이트할 수 있습니다. 또한 소프트웨어의 전반적인 품질과 신뢰성을 유지하는 데 도움이 됩니다.


테스트 노력의 효과를 측정하는 중요한 지표 중 하나는 코드 커버리지입니다.


강력한 자동화된 코드 검토 솔루션인 SonarQube Server는 테스트 커버리지 도구와 원활하게 통합되어 개발자가 더 높은 품질, 더 안전하고 철저히 테스트된 코드를 작성할 수 있도록 지원합니다.


SonarQube Server는 코드 커버리지의 보고, 모니터링 및 시각화를 지원하여 팀이 높은 코드 품질 기준을 유지할 수 있도록 돕습니다.


이 글은 SonarQube Server에서 코드 커버리지가 어떻게 작동하는지 심층적으로 다루며, SonarQube Cloud에도 적용되는 설정, 분석 및 해석 방법을 다룹니다.

코드 커버리지란 무엇인가?

테스트 커버리지도라고도 하는 코드 커버리지는 자동화된 테스트에 의해 실행된 코드베이스의 비율을 측정합니다. 테스트가 적용된 코드베이스 영역, 적용되지 않은 영역, 부분적으로 적용된 영역을 강조하여 테스트 커버리지가 개선되어야 할 잠재적 영역에 대한 통찰력을 제공합니다.


낮은 코드 커버리지는 버그나 취약점이 발견되지 않은 채 숨어 있을 수 있는 영역을 나타내며, 이는 운영 환경에서 잠재적 위험을 초래할 수 있습니다.


일반적으로 코드 커버리지 지표에는 다음이 포함됩니다:

  • 전체 커버리지: 테스트에 의해 실행된 전체 코드의 비율.
  • 라인 커버리지: 테스트에 의해 실행된 코드 줄의 비율.
  • 분기 커버리지: 테스트에 의해 실행된 제어 흐름 분기(if 문, 루프 등)의 비율.

SonarQube 서버에서 코드 커버리지 설정하기

SonarQube 서버는 널리 사용되는 코드 커버리지 도구와 원활하게 통합되는 중앙 허브 역할을 합니다. 정적 코드 분석 결과와 함께 커버리지 보고서를 수집하여 제시함으로써, 코드가 품질 기준을 충족하는지 확인하기 위한 명확한 합격/불합격 지표를 제공합니다.


보고서 생성을 위한 타사 도구를 설정했다면, SonarScanner가 보고서 위치를 파악하여 수집하고 SonarQube 서버로 전송할 수 있도록 간단히 구성하기만 하면 됩니다.


다양한 인기 테스트 도구 및 언어별 특정 형식의 커버리지 데이터 가져오기를 지원합니다.


직접 지원되지 않는 도구의 경우, SonarQube 서버는 일반 형식을 제공합니다.

SonarQube 서버는 Java, C/C++, JavaScript, Python, .NET, PHP 등 다양한 프로그래밍 언어를 지원합니다. 커버리지 보고를 활성화하려면 다음 단계를 수행해야 합니다:

  • 커버리지 도구 실행: 빌드 파이프라인의 일환으로 SonarScanner 분석 전에 커버리지 도구가 실행되도록 설정합니다.
  • 보고서 형식 일치: 커버리지 도구의 출력 형식을 SonarScanner가 요구하는 형식과 일치하도록 구성합니다. 예를 들어, Maven 기반 Java 프로젝트에서는 JaCoCo 플러그인을 사용하여 커버리지 보고서를 생성할 수 있습니다.
  • SonarScanner 매개변수 설정: 생성된 보고서 파일을 가져오기 위해 커버리지 보고서 위치를 지정하여 SonarScanner 분석 테스트 커버리지 매개변수를 구성합니다.


각 빌드 동안 커버리지 도구는 커버리지 데이터를 수집하고 결과를 하나 이상의 파일(일반적으로 테스트 커버리지는 별도의 파일)로 출력합니다.


그런 다음 SonarScanner는 분석 프로세스의 일환으로 해당 파일을 가져와 결과를 SonarQube 서버로 전송합니다.


SonarQube 서버는 다양한 도구와 언어의 커버리지 데이터를 원활하게 가져옵니다. 또한 사용자 정의 변환을 위한 일반 형식을 지원하여 지원되지 않는 도구와의 호환성도 보장합니다.


다음 언어에 대한 상세 가이드를 확인할 수 있습니다:


SonarQube 서버에서 코드 커버리지 분석하기:

설정이 완료되고 SonarQube 서버 분석이 실행되면, SonarQube 서버에서 코드 커버리지 결과를 확인할 수 있습니다. 주요 탐색 영역은 다음과 같습니다:

  • 프로젝트 개요: 대시보드는 라인, 분기, 메서드 커버리지 비율을 포함한 전체 코드 커버리지에 대한 개요를 제공합니다.


  • 커버리지 드릴다운: 특정 모듈, 패키지 및 클래스로 드릴다운하여 상세 커버리지 메트릭을 확인할 수 있습니다. 이는 추가 테스트가 필요할 수 있는 미검증 코드 섹션을 식별하는 데 도움이 됩니다. 커버리지 메트릭은 신규 코드와 전체 코드 모두에 대해 제공됩니다.




파일 컨텍스트에서 커버리지 주석을 확인할 수 있으며, 이는 코드가 유닛 테스트에 의해 커버되었는지, 부분적으로 커버되었는지, 아니면 커버되지 않았는지를 보여줍니다.


  • 커버리지 추적: SonarQube 서버는 시간 경과에 따른 커버리지를 추적하여, 다양한 버전과 커밋 간 테스트 커버리지의 개선 또는 퇴보를 모니터링할 수 있게 합니다.



코드 커버리지 지표 해석하기

코드 커버리지는 중요한 지표이지만, 100% 커버리지에 집착하면 오히려 효과가 떨어질 수 있습니다. 해석을 위한 몇 가지 지침은 다음과 같습니다:

  • 높은 커버리지가 높은 품질을 의미하지는 않습니다: 높은 코드 커버리지가 고품질 테스트를 보장하지는 않습니다. 테스트가 에지 케이스와 잠재적 실패 지점을 포함하도록 하세요.
  • 의미 있는 커버리지 추구: 단순히 높은 비율 달성에만 집중하기보다 코드 동작에 대한 신뢰를 제공하는 커버리지를 목표로 하십시오.
  • 다른 지표와의 균형 유지: 코드 커버리지는 SonarQube 서버가 제공하는 코드 스멜, 버그, 보안 취약점 등 다른 품질 지표와 함께 고려해야 합니다.



코드 커버리지 분석을 위한 SonarQube 서버 사용의 이점

  1. 신뢰성 및 유지보수성 향상: 더 높은 코드 커버리지는 테스트를 통해 더 많은 코드 경로가 실행되고 있음을 나타내며, 이는 개발 라이프사이클 초기에 버그를 식별하고 수정할 수 있게 합니다.
  2. 개발자 신뢰도 향상: 코드 커버리지의 주요 장점은 변경 시 제공하는 확신입니다. 코드 커버리지를 통해 변경 사항의 영향을 즉시 확인할 수 있습니다: 의도하지 않은 부작용이 발생하면 테스트가 즉시 실패합니다. 이러한 즉각적인 피드백은 문제를 조기에 발견하고 코드베이스의 안정성을 보장합니다. 높은 코드 커버리지를 가진 잘 테스트된 코드베이스는 개발자에게 확신을 심어주고 프로덕션 환경에서 새로운 버그가 발생할까 봐 두려움을 줄여줍니다.
  3. 상세 보고서: SonarQube Server는 테스트되지 않은 코드 부분을 정확히 지적하는 세분화된 코드 커버리지 보고서를 제공합니다. 이 보고서는 커버리지를 줄과 파일별로 세분화하여 테스트 노력을 명확히 보여줍니다. 코드 커버리지 보고서는 이해관계자와 잠재 고객에게 테스트 프로세스의 품질과 철저함을 입증하는 데 도움이 됩니다.
  4. 실행 가능한 인사이트: SonarQube Server는 단순히 커버리지 비율을 보고하는 것을 넘어, 코드베이스의 맥락 내에서 실행 가능한 인사이트를 제공합니다. 커버리지가 낮은 영역을 강조 표시하며, 커버리지되지 않은 라인 및 조건과 같은 지표를 제공합니다. SonarQube Server가 테스트 커버리지에 대해 보고하는 모든 지표는 문서를 참조하십시오.

Sonar와 코드 커버리지:

SonarQube Server는 개발자가 포괄적인 코드 커버리지를 달성할 수 있도록 지원하여, 테스트되지 않은 영역에 대한 명확한 가시성을 제공하고 컨텍스트를 포함한 실행 가능한 인사이트를 제공합니다.


테스트 효과성에 대한 정량적 측정값을 제공함으로써 개발자를 지원합니다.


이 데이터는 팀이 테스트 목표에 대한 진행 상황을 추적하고 테스트 활동에 대한 자원 할당에 관한 정보에 기반한 결정을 내리는 데 도움이 됩니다.


커버리지 분석을 개발 워크플로에 통합함으로써 코드베이스가 충분히 테스트되었는지 확인하고 높은 품질 기준을 유지할 수 있습니다.


코드 커버리지는 중요하지만, 지속적인 코드 품질 개선을 위한 더 광범위한 전략의 일부여야 한다는 점을 기억하십시오.


코드 커버리지 분석을 위해 SonarQube 서버를 활용할 준비가 되셨나요? 직접 개발자 에디션 을 사용해 보십시오.



모든 코드 라인에 신뢰를 구축하세요

SonarQube를 워크플로에 통합하고 오늘 바로 취약점을 찾아보세요.

Image for rating

120+ G2 Reviews

시작하기영업팀에 문의하세요
  • Follow SonarSource on Twitter
  • Follow SonarSource on Linkedin
language switcher
한국인 (Korean)
  • 법적 문서
  • 신뢰 센터

© 2008-2025 SonarSource SA. 모든 권리 보유. SONAR, SONARSOURCE, SONARQUBE, CLEAN AS YOU CODE는 SonarSource SA의 상표입니다.