본문 바로가기
Rust

Code & Doc Coverage

by curious week 2026. 6. 20.

Rust에서 코드 커버리지와 문서 커버리지 관리하기

Rust 프로젝트를 운영하다 보면 커버리지(Coverage)라는 용어를 자주 보게 된다.

커버리지는 크게 두 종류로 나뉜다.

  • 코드 커버리지 (Code Coverage)
  • 문서 커버리지 (Docstring Coverage)

둘은 완전히 다른 지표이며 각각 별도로 관리해야 한다.

코드 커버리지는 코드 품질 관리를 위해 꼭 필요하다. (평균: 80% ~ 90%)
문서 커버리지는 오픈소스 프로젝트를 운영한다면 다른 기여자를 위해 또는 crates.io를 통해 사용하게 되는 사용자를 위해서 꼭 필요하다.

1. 코드 커버리지 (Code Coverage)

코드 커버리지는 테스트가 실제 코드를 얼마나 실행했는지 측정하는 지표이다.

예를 들어 다음과 같은 코드가 있다고 가정하자.

pub fn add(a: i32, b: i32) -> i32 {
    a + b
}

pub fn sub(a: i32, b: i32) -> i32 {
    a - b
}

테스트가 add()만 실행한다면 sub()는 테스트되지 않은 상태가 된다.

설치

cargo install cargo-llvm-cov

커버리지 확인

cargo llvm-cov

워크스페이스 전체 확인

cargo llvm-cov --workspace

HTML 리포트 생성

cargo llvm-cov --workspace --html

생성 위치

target/llvm-cov/html/index.html

HTML 리포트를 열어보면 실행된 코드는 초록색, 실행되지 않은 코드는 빨간색으로 표시된다.

LCOV 생성 (CI 용도)

cargo llvm-cov --workspace --lcov --output-path lcov.info

Codecov 등의 서비스와 연동할 때 사용한다.


2. 문서 커버리지 (Docstring Coverage)

문서 커버리지는 공개 API에 문서가 얼마나 작성되어 있는지 측정하는 지표이다.

다음 코드는 문서가 없는 상태이다.

pub struct NoteService;

pub fn add_note() {}

문서를 추가하면 다음과 같다.

/// Service for managing notes.
pub struct NoteService;

/// Adds a new note.
pub fn add_note() {}

공개 API 문서 강제하기

Rust에서는 missing_docs lint를 사용할 수 있다.

경고 수준

#![warn(missing_docs)]

오류 수준

#![deny(missing_docs)]

문서가 없는 공개 API에 대해 경고 또는 오류를 발생시킨다.


문서 생성

API 문서 생성

cargo doc --no-deps

문서 열기

cargo doc --open

생성된 Rust API 문서를 브라우저에서 확인할 수 있다.


공개 API 목록 확인

설치

cargo install cargo-public-api

실행

cargo public-api

예시

pub struct Note
pub struct NoteService
pub fn add_note
pub fn delete_note

문서화해야 할 공개 API를 빠르게 확인할 수 있다.


개인적인 권장 기준

작은 오픈소스 프로젝트 기준

코드 커버리지

60% 이상   : 양호
70~80%     : 권장
80~90%     : 우수

문서 커버리지

  • 공개 API (pub)는 문서 작성
  • 내부 구현 (fn, pub(crate))은 필요할 때만 작성

자주 사용하는 명령어 정리

# 코드 커버리지
cargo llvm-cov

# 워크스페이스 커버리지
cargo llvm-cov --workspace

# HTML 리포트
cargo llvm-cov --workspace --html

# LCOV 생성
cargo llvm-cov --workspace --lcov --output-path lcov.info

# API 문서 생성
cargo doc --no-deps

# API 문서 열기
cargo doc --open

# 공개 API 확인
cargo public-api

Rust 오픈소스 프로젝트에서는 일반적으로 테스트 커버리지와 공개 API 문서화를 함께 관리한다. 코드 커버리지는 기능의 안정성을, 문서 커버리지는 사용성과 유지보수성을 높여준다.

'Rust' 카테고리의 다른 글

Attribute  (0) 2026.06.01
Cargo.toml  (0) 2026.06.01
00 Installation  (0) 2026.01.14