평가 릴리스. 아래의 모든 기능은 무료 14일 체험 기간 동안 사용할 수 있습니다. 체험 기간이 끝나면 요청 시 라이선스 키를 받을 수 있으며, 자동으로 발급됩니다. 키는 사용자별로 개별 기능을 켜거나 제한할 수 있습니다. 라이선스 요청 →
AI가 테스트를 작성했다면
생성된 테스트 스위트에 맞선 커버리지
개요가 일반론을 폅니다. 여기서는 그것을 기능 목록 자체에 맞대어 봅니다. 생성된 테스트 스위트는 특유의 모양으로 실패하기 때문입니다 — 모든 줄이 닿았고, 분기의 절반은 한 번도 타지 않았으며, 테스트 제목에 이름만 오르고 실제로는 호출되지 않는 함수가 몇 개 있습니다 — 그리고 아래 다섯 가지가 바로 그 모양을 드러냅니다.
- 분기 및 MC/DC 커버리지는 각 갈래와 각 판정에 대한 호버와 함께 줄이 실행되었다와 판정이 실제로 시험되었다를 갈라놓습니다. 해피 패스만 걷는 스위트는 줄에서 100%에 가깝고 분기에서 50%에 가깝게 나오며, 바로 그 간극이 발견입니다. 테스트가 전부 초록이어도 거기엔 아무것도 드러나지 않습니다.
- 종합 점수는 조화 평균이라서 강한 지표가 약한 지표를 가릴 수 없습니다 — 생성된 스위트에 적용해야 할 산술이 바로 이것입니다. 줄 수치와 분기 수치를 단순 평균 내면 정작 볼 만한 하나의 수치가 묻힙니다.
- 데드 코드 경고는 측정 가능한 줄이 있으면서 커버리지가 0인 함수마다 Problems 패널에 항목을 세웁니다. 테스트 제목에 함수 이름만 올리고 한 번도 닿지 않는 스위트는 다른 어디에서도 실패하지 않습니다.
- 디프 커버리지는 git 기준 ref에 대비해 위의 모든 것을 방금 바뀐 줄로 좁힙니다 — 저장소의 평생 평균이 아니라 오늘 오후에 당신이 받아들인 코드로. 평생 평균으로 보면 크고 오래된 스위트는 얼마든지 건강해 보입니다.
- Copy Uncovered Lines는 한 번도 실행되지 않은 것만 정확히 Markdown으로 내보냅니다 — 애초에 그 스위트를 작성한 어시스턴트에게 그대로 다시 붙여넣을 수 있는 형태로.
이 중 어느 것도 테스트를 읽고 그 좋고 나쁨을 판단하지 않으며, 여기 쓰인 어떤 것도 그런 주장으로 받아들여져서는 안 됩니다. 단언문이 하나도 없는 테스트라도 자신이 닿은 모든 줄을 커버합니다. 이것들이 재는 것은 리뷰어가 머릿속에 담아 둘 수 없는 부분 — 어떤 코드가 한 번도 실행되지 않았는가입니다.
이 확장 프로그램만의 기능
행 커버리지는 100%라고 말합니다. 하지만 바이너리의 312바이트는 한 번도 실행되지 않았습니다.
여기의 다른 모든 지표는 소스에서 측정됩니다. 코드를 계측하고, 계측된 빌드를 실행하고, 무엇이 발동했는지 셉니다. 목적 코드 커버리지는 소스 기반 도구가 절대 닿을 수 없는 것을 측정합니다 — 빌드된 바이너리가 실제로 얼마나 실행되었는지를, 명령 스트림을 관찰해 명령 바이트 단위로 잽니다. 컴파일러는 소스의 어느 줄로도 설명되지 않는 코드를 만들어 냅니다. 배열 경계 검사, switch 점프 테이블, 레지스터 스필, 나눗셈이나 부동소수점을 위한 런타임 보조 루틴 등입니다. 이 중 어느 것도 소스에 나타나지 않으므로, 이 확장이 읽는 다른 어떤 지표를 포함해서라도 소스 기반 도구는 그것이 실행되었는지 말할 수 없습니다. 또한 손으로 쓴 어셈블리는 결코 계측되지 않으므로, 이것이 어셈블리를 다루는가?라는 물음에 답할 수 있는 유일한 지표이기도 합니다.
DO-178C는 이를 명시적으로 지정합니다. 레벨 A에서는 MC/DC에 더해 이것이 요구됩니다. 이를 읽는 다른 VS Code 확장은 없습니다. 임베디드 타깃에서 이를 얻는 방법 →
기능
핵심 기능
- 측정된 모든 파일의 Coverage 보기, 개요 눈금자와 Annotated Source; 에디터 자체 거터에는 기본적으로 표시할 가치가 있는 것만 — MC/DC 막대, 이전 실행 이후 삼각형, 편집된 줄의 점 — 그리고 설정 하나로 커버되지 않은 줄만의 막대나 실행 횟수 히트맵.
- 트레이스 파일이 제공하는 내용에 따른 라인별 구문, 분기, 함수, 리전, MC/DC, C++ 인스턴스화 커버리지.
- 다중 포맷 수집 및 기록된 출처와 함께 여러 실행의 결정론적 병합.
- 경로 재매핑 — CI 빌드 머신 경로 → 로컬 워크스페이스.
- 차이 커버리지 — git 기준 참조 대비 변경된 라인만 장식.
- 종합 점수에 따라 색상으로 구분되는 Explorer 배지와 프로젝트 전체 상태 표시줄 항목.
- watch 모드 — 트레이스 파일이 변경되면 자동으로 다시 로드.
- Run Tests with Coverage — 작업 영역 루트에서 테스트 러너를 인식하고 커버리지를 켠 채 실행하여 기록된 결과를 로드합니다.
- 원격 추적 파일 —
coverageFile.paths항목은https://URL일 수 있습니다: CI 아티팩트를remote.headers에 설정한 헤더와 함께 조건부로(ETag / Last-Modified) 가져와 로컬 파일처럼 로드하고,remote.refreshMinutes로 타이머에 따라 다시 가져오며, 가져오기가 실패하면 마지막으로 내려받은 사본이 대신 로드됩니다. - 경로의 변수 — 모든 경로 설정에서
${workspaceFolder},${workspaceFolderBasename},${userHome},${env:NAME},${command:id},${config:section.key}; 모르는 변수는 적힌 그대로 남으므로 오타는 사라지는 대신 검색 로그에 드러납니다. - 다중 루트 작업 영역 — 모든 폴더가 자체 설정(
.vscode/settings.json또는.code-workspace항목)으로 검색되고, 그 추적 파일들은 하나의 실행으로 병합되며, Coverage 보기는 파일을 폴더별로 묶고, 폴더가 추가되거나 제거되면 커버리지가 저절로 다시 로드됩니다. - 다시 로드 트리거 둘 더 — 작업 영역 밖의 절대
coverageFile.paths항목은 폴링되므로 그곳에 나타난 파일이 로드되고,watch.reloadAfterTasks는 watch 모드가 켜져 있든 아니든 끝나면 커버리지를 다시 로드할 작업(npm: test)의 이름을 지정합니다. - 취소할 수 있는 진행률 — 추적 파일이 열 개 이상이거나 8 MB 이상인 로드와 모든 Generate Full HTML Report는 Cancel 버튼이 있는 진행률 알림 아래에서 실행되며, 취소하면 이전 실행이 로드된 채로 남습니다.
- VS Code 자체의 Test Coverage 보기 — 모든 로드가 에디터의 Test Coverage API(
testCoverage.publish)를 통해서도 게시되므로 Test Explorer의 커버리지 패널, Explorer의 파일별 백분율, 에디터 자체의 Show Inline Coverage 토글이 같은 숫자를 보여 줍니다. Show in Test Coverage View는 요청 시 게시하고 패널을 엽니다. 테스트에 이름이 있으면(lcov의TN:) 뷰에서 파일의 커버리지를 테스트별로 필터링합니다. - 제안되는 재매핑 규칙 — 로드 후 맞지 않는 파일이 남으면(로컬 체크아웃에 대한 컨테이너 또는 CI 경로) 확장은 그중 가장 많은 것을 설명하는
pathRemap규칙을 추론해 로드 결과에서 Apply Suggested Remap을, 팔레트에서 Suggest Path Remap Rule을 제공합니다. 클릭 없이는 아무것도 기록되지 않습니다. - 무시 glob —
fuciniCoverage.ignore(vendor/**,**/*.generated.ts)는 로드 시 파일 전체를 실행에서 빼므로 모든 보기, 게이트, 내보내기가 그것들 없이 셉니다. 로드 결과는 몇 개인지 알리고 출력은 하나하나 이름을 밝힙니다. - 측정되지 않음 대 커버되지 않음 — 어떤 테스트도 로드하지 않은 파일은 모르는 사이에 0%로 점수화되지 않습니다. 상태 표시줄은 그런 파일에 not measured라고 표시하고,
unmeasured.mode는 그런 파일을 Coverage 보기에 나열하거나 각각을 커버되지 않은 파일로 셀 수 있으며,threshold.unmeasuredFiles로 그 수를 게이트할 수 있습니다. - 병합 결과가 보입니다 — 여러 트레이스 파일을 로드하면 각 파일 행에 수치의 출처 보고서가 표시되고, 그 수치가 이전 보고서를 덮어쓴 곳에는 배지에 테두리가 붙으며, 각 트레이스 파일 행은 자신의 파일 중 몇 개가 덮어쓰였거나 다른 파일을 덮어썼는지 세고, 트레이스 파일 행을 클릭하면 트리에서 해당 파일이 강조됩니다(
coverageView.mergedMarks).
종합 점수 및 컴플라이언스
라인, 분기, 함수, 리전, MC/DC, 인스턴스화 전반에 걸친 단일 가중 조화 평균. 조화 평균이기 때문에 약한 지표가 완벽한 지표에 의해 가려질 수 없습니다. 가중치는 기본적으로 IEC 61508 / ISO 26262 / DO-178C 등급에 맞춰져 있으며, COMPLIANT / NON-COMPLIANT 판정은 지표별 임계값과 구성 가능한 모드에 따라 결정됩니다.
Screenshot pending — add assets/img/statusbar.png (see SCREENSHOTS.md).에디터 내 분석
- 함수 CodeLens — 함수별 커버리지 %, 클릭하면 첫 번째 미커버 라인으로 이동합니다.
- 브랜치 및 MC/DC 호버 — 분기별 통과/미통과 횟수와 결정별 조건/벡터 분석; 선택적인 색상 MC/DC 여백 거터.
- 데드 코드 경고 — 측정 가능한 라인이 있고 커버리지가 0인 함수에 대한 Problems 패널 경고.
- Next/Previous Uncovered 탐색.
- 불일치 경고 — 파일 내용이 더 이상 실행 결과에 맞지 않을 때. 파일이 저장되거나 디스크에서 변경될 때마다 갱신되며, 호버에 정확한 차이가 표시됩니다.
- 이전 실행 이후 — 이전 실행에서 실행되었지만 이번에는 실행되지 않은 모든 줄에 빨간 삼각형, 반대의 경우 녹색 삼각형, 개요 눈금자와 호버의 실행 횟수와 함께.
- 편집된 버퍼 — 편집에 따라 모든 표시, 호버, CodeLens가 텍스트와 함께 이동하고, 다시 쓰인 줄에서는 물러나며, 회색 점이 그 이유를 알려 줍니다.
- 에디터 거터 모드 —
editorGutter.mode는 거터를 발견 사항만으로 유지하거나(off), 한 번도 실행되지 않은 모든 줄에 막대를, 분기 갈래가 한 번도 타지 않은 곳에 호박색 막대를 두거나(uncovered), 실행된 모든 줄에 자주 실행될수록 더 뜨거운 따뜻한 색조를 더합니다(heatmap); Choose Editor Gutter Mode...가 팔레트나 상태 표시줄 메뉴에서 전환합니다. - 인라인 실행 횟수 —
hitCounts.inline은 문장이 시작하는 각 줄 뒤에×12를 적으며,×0도 포함합니다; Toggle Inline Hit Counts가 이를 뒤집습니다. - 줄 단위 Problems 항목 —
problems.perLine은 열린 문서에서 한 번도 실행되지 않은 줄 블록마다(죽은 함수는 마흔 개가 아니라 한 항목) Information 진단을 두고, 선택적으로 분기 갈래가 한 번도 타지 않은 모든 줄에도 둡니다; 항목은 편집에 따라 자기 줄을 따라갑니다. - 줄 색상과 스크롤 막대 지도 —
lineHighlight는 여백의 표시 대신(또는 그와 함께) 줄 자체 뒤에 반투명한 색을 깔고,overviewRuler는 스크롤 막대의 줄무늬를 스스로 정합니다. 여백을 끄면 파일의 빈틈 지도만 남고 코드 옆에는 아무것도 없습니다. - 이 줄을 커버한 추적 파일은 무엇인가 — 여러 보고서를 병합했을 때, 실행 횟수 호버가 그 줄을 커버한 보고서를 모두 이름으로 알려 주고(lcov
TN:의 스위트 이름 포함), Coverage 뷰에서 추적 파일 행을 클릭하면 그 파일이 기여한 줄이 강조됩니다.
- 빨강, 호박색, 초록 —
editorGutter.mode와lineHighlight의coverage모드는 측정된 모든 줄을 색상 스케일의 색으로 칠합니다; 상태 표시줄의 모드 버튼과Alt+G로 다음 모드로 넘어갑니다. - 나만의 색상, 미리 보기와 함께 — 색상 스케일과 히트맵의 음영(
heatmap.colors,heatmap.colorsDark)은 설정이며, 설정 페이지는 색을 고르는 즉시 밝은 에디터와 어두운 에디터에서 미리 보여 줍니다. - 파일이 어느 보고서에서 오는가 — 두 보고서가 같은 코드를 측정할 때,
coverageFile.sources규칙이나 Choose Coverage Source for This File...가 가장 최신 것이 이기는 대신 각 파일이 어느 것을 보여 줄지 정합니다.
보고 및 기록
- Generate Full HTML Report — 디렉터리별로 자체 렌더링되는 다중 페이지 보고서; 단일 파일용 Open Annotated Source.
- 커버리지 추세(▲/▼)를 포함한 선택적 로컬 실행 기록, 그리고 Compare Two History Runs와 Compare with Last Run.
- Show Worst-Covered Files / Functions와 Copy Uncovered Lines(Markdown).
- Export Fucini JSON — 전체 정규화된 모델.
- Export Coverage Report... — 같은 실행을 CSV(파일별 또는 함수별), Markdown 요약, LCOV 추적 파일, Cobertura XML, SARIF, 또는 자체 완결형 SVG 배지로. 스물다섯 개의 리더와 이 작성기들 덕분에 확장은 형식 사이를 변환합니다: JaCoCo나 llvm-cov JSON을 불러와 Codecov·Coveralls·SonarQube가 읽는 LCOV, 또는 Jenkins·GitLab·Azure DevOps가 수집하는 Cobertura XML을 내보내십시오.
- Generate Coverage Badge — 작업 영역에 바로 기록되는 shields 스타일 SVG(
badge.outputPath, 기본값coverage-badge.svg)로, README가 호스팅 서비스 없이로 넣을 수 있습니다;badge.metric이 줄, 분기, MC/DC 또는 종합 점수를 고르고, 색상은colorScale.*단계를 따르며,badge.autoUpdate는 로드할 때마다 다시 기록합니다.
Screenshot pending — add assets/img/report.png (see SCREENSHOTS.md).
Screenshot pending — add assets/img/annotated-source.png (see SCREENSHOTS.md).Community와 Pro, 기능별 비교
두 개의 목록, 하나의 코드베이스. Community는 영구 무료 등급이며 Pro 목록이 14일 평가판 이후 정착하는 곳이기도 합니다. Pro와 평가판은 모든 것을 제한 없이 포함합니다. 경계는 무료 등급이 언제나 모든 발견을 볼 수 있고 편의, 증거, 규모에 대해서만 비용을 내도록 그어져 있습니다 — VS Code 안에서는 Fucini Coverage: What Community Includes가 같은 목록을 각 한도의 오늘 사용량과 함께 보여 줍니다.
| 기능 | Community(무료) | Pro와 평가판 |
|---|---|---|
| 25개 형식 전부, 다중 파일 병합, 경로 재매핑 | ✓ | ✓ |
| 거터, 개요 눈금자, 탐색기 배지, 커버리지 보기, CodeLens, 호버 | ✓ | ✓ |
| 자동 다시 로드가 있는 감시 모드, Run Tests with Coverage | ✓ | ✓ |
| 차이 커버리지, 기록과 추세, 이전 실행 이후 표시 | ✓ | ✓ |
| 명령으로 커버리지 로드 | 하루 25회(자동 로드는 계산되지 않음) | 무제한 |
| 실행 비교, Check Coverage Thresholds, Open HTML Report, Export Coverage Report, Export Fucini JSON | 각 주 5회 | 무제한 |
| Annotated Source, 제자리 | 주 5회 | 무제한, 여기에 고정 사이드 창과 Generate Full HTML Report |
| Export Coverage Report | CSV(파일별, 함수별) | 추가로 Markdown, LCOV, Cobertura XML, SARIF, SVG 배지 |
| 더 이상 커버리지와 일치하지 않는 파일 | 보고되고 흐리게 표시 | 추가로 이를 증명한 줄, 함수 또는 체크섬 |
| 살아남은 뮤턴트 | 줄에 표시, 개수 포함 | 각 뮤턴트가 무엇을 바꿨는지도 표시 |
| 한 줄을 실행한 테스트 | 개수 | 테스트 이름도 표시 |
| CRAP | 실행의 Max CRAP, 모든 함수의 CRAP | 순위가 매겨진 Riskiest Methods 목록도 제공 |
| Risk hotspots | 개수, 그리고 최악의 점수 | 순위 목록도, 각 항목이 해당 함수를 엶 |
| MC/DC 커버리지, 거터 막대와 호버 | — | ✓ |
| 오브젝트 코드 커버리지 점수와 게이트 | 존재만 알림 | ✓ |
| 여러 보고서가 측정하는 파일 | 가장 최신 보고서 | 파일별로 하나를 선택하거나 결합할 수도 있음(agree / union) |
| 텔레메트리 필요 | 아니요 — 선택적으로, 컴퓨터당 한 번, Unlock Full Features가 자세한 사용 텔레메트리와 오른쪽 열의 모든 것 30일 이용을 맞바꿉니다 | 아니요 |
일주일은 그 주를 시작한 첫 사용부터 7일 동안이며, 커버리지를 읽기만 하는 기능은 아무것도 집계되지 않습니다. 아직 구독할 준비가 되지 않으셨나요? 7일 이용권은 오른쪽 열의 모든 기능을 일주일 동안 제공하며, 한 번만 결제하면 되고 해지할 것도 없습니다.
VS Code와 Visual Studio 나란히 비교
하나의 제품, 두 편집기, 하나의 리더: 같은 보고서가 두 곳에서 자릿수까지 같은 숫자를 냅니다. Visual Studio용 Coverage Studio는 Visual Studio 2022와 2026 — Community, Professional, Enterprise에서 실행되며, 2022에서 Enterprise 전용인 Visual Studio 자체 코드 커버리지는 사용하지 않습니다. 모든 유료 플랜에 포함되고, 두 편집기가 있는 기기 한 대는 좌석 하나입니다. 선 위의 모든 것은 양쪽에 있고, 선 아래는 Visual Studio에 대응물이 없는 것과 아직 준비 중인 것입니다.
| 기능 | VS Code | Visual Studio |
|---|---|---|
25개 형식 전부, 다중 파일 병합, 경로 재매핑, 같은 fuciniCoverage.* 설정과 .vscode/settings.json | ✓ | ✓ |
| 여백 표시, 개요 눈금자, 실행 횟수, 함수별 렌즈, 호버, Coverage 보기, 상태 표시줄과 카드 | ✓ | ✓ |
| 자동 다시 읽기 감시 모드, Next Uncovered, Next Partly-Tested Decision, Markdown으로 복사 | ✓ | ✓ |
| 종합 점수, 임계값과 COMPLIANT 판정, MC/DC, CRAP | ✓ | ✓ |
| Getting Started, 18개 언어 | 둘러보기 | Tools → Coverage Studio 아래의 페이지 |
| Run Tests with Coverage, Run This Test with Coverage, 저장할 때마다 커버리지, 편집기 자체 Test Coverage 패널 | ✓ | ✓, 그리고 Collect Coverage in Test Explorer… — Test Coverage 패널은 VS Code API입니다 |
| 탐색기 배지 | ✓ | — (솔루션 탐색기는 파일을 꾸밀 수 없습니다) |
| Annotated Source, HTML 보고서, 내보내기, Check Thresholds, Error List, 이력과 추세, diff 커버리지 | ✓ | ✓ |
| 어떤 테스트가 한 줄을 실행했는지, 트리와 편집기에서 제외, 네임스페이스 관점과 검색 상자, 커버리지 세션, 추세 차트, CI 기준선 | ✓ | ✓, 그리고 C++ 프로젝트용 Run Native Project with Coverage |
| 무료 등급, 체험판, 결제 | ✓ | — (유료 플랜. VS Code가 활성화된 컴퓨터에서 키를 찾습니다) |
다음 예정: 이 모든 커버리지를 Azure DevOps에서, 무료 확장으로. Azure DevOps는 빌드의 커버리지를 자체 형식이 담는 만큼만 보여 줍니다 — 줄, 그리고 백분율로 된 분기. Fucini DevOps Studio는 Coverage Studio가 읽는 것 전부를 보여 줄 것입니다: 이 25가지 형식 모두를, 모든 언어에 대해, MC/DC, 조건, 종합 점수, 게이트와 함께, 그것을 만든 파이프라인의 Coverage 탭으로. 첫 릴리스 소식은 뉴스를 확인하세요.
설정 참조
설정 UI에서(Fucini Coverage 검색) 또는 settings.json에서 구성합니다.
Download the complete settings reference — a commented settings.json holding every fuciniCoverage.* setting at the same default the packaged extension uses, ready to copy into your workspace or user settings. Regenerated from the extension on every release, so it cannot drift from what the VSIX ships.
폴더별.로 끝나는 행은 다중 루트 작업 영역에서 폴더 수준 값을 받습니다: 각 폴더는 자체 .vscode/settings.json 또는 .code-workspace 항목으로 검색되고, 그 안의 ${workspaceFolder}는 그 폴더를 뜻합니다.
지역화
| 설정 | 기본값 | 기능 |
|---|---|---|
language | auto | 이 확장 자체의 런타임 UI(상태 표시줄, 알림, 툴팁, 라이선스 및 보고서 웹뷰)를 VS Code의 전체 표시 언어와 무관하게 특정 언어로 고정합니다. auto는 VS Code를 따릅니다. 다음 중 하나: auto, en, uk, nl, de, fr, es, hr, pl, it, pt, ru, tr, he, ja, zh, hi, ko, ar. 명령 팔레트 항목이나 설정 UI 자체의 레이블/설명은 바꾸지 않습니다 — 그것들은 VS Code가 자체 표시 언어에서 확인합니다. |
검색 및 로딩
| 설정 | 기본값 | 기능 |
|---|---|---|
coverageFile.defaultLocation | "" | 검색 및 파일 선택 대화 상자의 기준 폴더입니다. 변수: ${workspaceFolder}, ${workspaceFolderBasename}, ${userHome}, ${env:NAME}, ${command:id}, ${config:section.key}. 폴더별. |
coverageFile.paths | [] | 불러와 병합할 추적 파일 — 기준 폴더 기준 상대 경로, 절대 경로(위와 같은 변수), 또는 로드할 때마다 가져오는 http(s):// URL — URL 자체에 확장자가 없으면 #lcov.info(또는 다른 파일 이름)를 URL 조각으로 붙이세요. 상대 * glob은 기준 폴더 아래를 재귀적으로 검색하고, 절대 항목에도 와일드카드를 넣을 수 있으며(${workspaceFolder}/build/coverage-merged/*.lcov.info, 어느 깊이든 뜻하는 **) 그 앞의 폴더들 아래에서 검색됩니다. 폴더별. |
watch.enabled | true | 추적 파일이 변경되면 — 또는 작업 영역 밖의 절대 항목이라면 나타나면 — 커버리지를 다시 불러옵니다. 폴더별. |
watch.reloadAfterTasks | [] | watch.enabled가 켜져 있든 아니든, 끝나면 커버리지를 다시 로드할 작업 이름(label, 또는 npm: test 같은 source: name). 폴더별. |
remote.headers | [] | 모든 URL 가져오기에 함께 보내는 Name: value 헤더. 변수가 확장되므로 Authorization: Bearer ${env:CI_TOKEN}은 토큰을 settings.json 밖에 둡니다. 폴더별. |
remote.refreshMinutes | 0 | URL 항목을 N분마다 다시 가져옵니다(조건부 GET; 0 = 로드할 때만). 폴더별. |
baseline.report | "" | 로드된 모든 실행을 견주어 볼 보고서 — 빌드 서버가 게시하는 main 브랜치의 보고서: URL(remote.headers로 가져오고 coverageFile.paths의 URL과 같은 방식으로 캐시됨)이거나, 내려받은 아티팩트의 경로(절대 경로 또는 폴더 기준 상대 경로). 그러면 상태 표시줄의 카드가 이 실행이 그에 비해 어디에 있는지 말해 주고, Compare with CI Baseline이 바뀐 파일을 나열합니다. 비어 있으면 기준선 없음. 폴더별. |
색상 스케일 및 배지
| 설정 | 기본값 | 기능 |
|---|---|---|
colorScale.preset | default | colorblind는 커버리지에 색을 입히는 모든 곳에서 빨강·호박색·초록을 주홍·주황·파랑(Okabe–Ito)으로 바꿉니다. 아래에서 바꾼 색이 우선합니다. |
colorScale.lowColor | #8b1a1a | 커버리지 그라데이션의 하단. |
colorScale.midColor | #b8860b | 그라데이션의 기준 색상. |
colorScale.highColor | #228b22 | 그라데이션의 상단(100%). |
colorScale.lowThreshold | 80 | 배지가 낮음 → 중간으로 바뀌는 비율. |
colorScale.highThreshold | 90 | 배지가 중간 → 높음으로 바뀌는 비율(그라데이션 기준점이기도 함). |
heatmap.colors | ["#fff1a8", …, "#a63603"] | 밝은 테마에서 히트맵의 다섯 가지 음영, 가장 적게 실행된 줄부터 가장 많이 실행된 줄까지. |
heatmap.colorsDark | ["#6e5f22", …, "#ff6a00"] | 어두운 테마용 같은 설정으로, 밝을수록 더 많이 실행되었다는 뜻입니다. |
종합 점수(가중 조화 평균)
| 설정 | 기본값 | 기능 |
|---|---|---|
whmWeights.lines | 1 | 행/구문 커버리지 가중치. |
whmWeights.functions | 1 | 함수 커버리지 가중치. |
whmWeights.regions | 1.5 | 리전 커버리지 가중치(llvm-cov). |
whmWeights.branches | 2 | 분기 커버리지 가중치. |
whmWeights.mcdc | 4 | MC/DC 커버리지 가중치. 0은 제외합니다. |
whmWeights.instantiations | 0.5 | C++ 템플릿 인스턴스화 가중치(llvm-cov). |
임계값 및 컴플라이언스
| 설정 | 기본값 | 기능 |
|---|---|---|
threshold.profile | standard | standard는 아래의 기본값을 설정하고, safety는 뮤테이션 점수를 제외한 모든 게이트를 100으로 두며, custom은 설정해 둔 값을 그대로 둡니다. 기본 프로필에서는 안전 지표에 게이트가 걸리지 않습니다. MC/DC를 측정하지 않는 프로젝트가 그 때문에 불합격되지는 않습니다. |
threshold.statement | 80 | 최소 구문 비율. 0은 검사를 끕니다. |
threshold.branch | 70 | 최소 분기 비율. |
threshold.mcdc | 0 | 최소 MC/DC 비율. |
threshold.functions | 80 | 최소 함수 비율. |
threshold.regions | 75 | 최소 리전 비율(llvm-cov). |
threshold.instantiations | 0 | 최소 인스턴스화 비율(llvm-cov). C 전용 프로젝트는 건너뜁니다. |
threshold.conditions | 0 | 최소 조건 비율. |
threshold.functionCalls | 0 | 최소 함수 호출 비율. 보고서에 해당 값이 있는 경우. |
threshold.objectCode | 0 | 최소 오브젝트 코드 비율. 보고서에 해당 값이 있는 경우. |
threshold.mutation | 0 | 최소 뮤테이션 점수. 뮤테이션 보고서가 로드된 경우. |
threshold.weighted | 75 | 최소 종합 점수. |
compliance.mode | strict | strict | whm | both | either. |
compliance.diagnostics | false | 충족하지 못한 임계값마다 문제 패널의 오류 하나, 추적 파일 위에. |
threshold.unmeasuredFiles | -1 | 측정되지 않은 파일의 최대 수(unmeasured.mode가 list 또는 count여야 함). -1은 검사하지 않고, 0은 어떤 테스트도 로드하지 않은 첫 파일에서 실패합니다. |
problems.perLine | off | off | uncovered | uncoveredAndPartial: 열린 각 문서에서 연속된 커버되지 않은 줄 블록마다 Information 항목(에디터의 물결선) 하나, 선택적으로 분기 갈래가 한 번도 타지 않은 줄마다 하나 더. problems.enabled와 독립적입니다. 폴더별. |
차이, 재매핑 및 보고서
| 설정 | 기본값 | 기능 |
|---|---|---|
pathRemap | [] | 순서가 있는 {from,to} 경로 재작성. to는 ${workspaceRoot}를 쓸 수 있으며, 이는 추적 파일이 있는 폴더를 먼저 시도한 뒤 작업 영역의 다른 모든 폴더를 시도합니다. 로드 후 맞지 않는 파일이 남으면 로드 결과가 맞지 않는 경로에서 추론한 규칙과 함께 Apply Suggested Remap을 제공합니다(팔레트에서는 Suggest Path Remap Rule). 클릭하기 전까지 아무것도 기록되지 않습니다. 폴더별. |
ignore | [] | 실행에서 뺄 파일 전체의 glob 패턴(vendor/**, **/*.generated.ts, build/**) — 로드 시 빠지므로 모든 보기, 게이트, 내보내기가 그것들 없이 셉니다. 작업 영역 상대 경로와 절대 경로에 맞춰지며, /가 없는 패턴은 .gitignore처럼 어느 깊이에서든 이름에 맞습니다. 폴더별. |
ignore.generated | true | 생성된 .NET 파일 — *.Designer.cs, *.g.cs, *.g.i.cs, *.generated.cs, *.razor.g.cs, *.AssemblyInfo.cs, GlobalUsings.g.cs, Migrations/**, obj/** — 을 ignore가 적용되기 전에 모든 합계, 페이지, 내보내기에서 제외합니다. 마이그레이션을 테스트하는 프로젝트에서는 끕니다. 폴더별. |
ignore.namespaces | [] | .NET 소스에서 모든 합계와 모든 페이지에서 제외할 네임스페이스: 네임스페이스 선언이 이 중 하나와 일치하는 파일은 세지 않습니다. *를 와일드카드로 쓰는 접두어 — Acme.Generated, Acme.*.Migrations, *Tests. 폴더별. |
ignore.attributes | ["ExcludeFromCodeCoverage"] | .NET 클래스, 메서드, 속성을 집계에서 빼는 특성으로, 소스에서 읽습니다: 이 중 하나 아래에 있는 멤버는 어떤 도구가 보고서를 썼든 LCOV_EXCL_START/STOP이 제외하듯 제외됩니다. 이름은 Attribute 접미사가 있든 없든, 네임스페이스가 있든 없든 됩니다. GeneratedCode, Obsolete 또는 직접 만든 것을 추가하세요. 폴더별. |
testRun.perTest | false | Run Tests with Coverage가 dotnet test 레시피를 테스트 클래스 하나씩 실행하고 각 보고서에 그 클래스를 태그로 붙여, 마우스를 올렸을 때의 설명, CodeLens, Show Tests That Ran This Line이 어떤 테스트가 줄을 실행했는지 말할 수 있게 합니다 — 더 느리고 .NET에만 해당하는데, .NET의 Cobertura 보고서는 스스로 그것을 말하지 못하기 때문입니다. 폴더별. |
testRun.onSave | false | 소스를 저장하면 저장 직후에 그 소스를 커버하는 테스트가 커버리지와 함께 실행됩니다: .NET 솔루션에서는 저장한 파일의 프로젝트를 참조하는 테스트 프로젝트만 각각 한 번의 dotnet test로, 다른 러너는 레시피 전체를. 연속된 저장은 한 번의 실행이 되고, 이미 진행 중인 실행은 중단되지 않습니다. 폴더별. |
testRun.skipWhenTestsFail | false | Run Tests with Coverage는 러너가 실패로 종료되면 커버리지를 화면에 있던 그대로 두고 Output 창에 그렇게 알립니다 — 실패한 실행이 초록색 파일을 빨간색으로 칠하지 않습니다. 폴더별. |
unmeasured.mode | off | off | list | count: 어떤 테스트도 로드하지 않은, 실행과 같은 종류의 작업 영역 파일을 어떻게 다룰지(측정되지 않음 대 커버되지 않음 참조). list는 Coverage 보기와 로드 결과에서 이름을 밝히고, count는 각각을 코드 줄 수만큼 커버되지 않은 파일로 점수화하기도 합니다. 바꾸면 다시 로드됩니다. |
unmeasured.exclude | ["**/*.h", "**/*.hpp", "**/*.hh", "**/*.inl", "**/*.d.ts"] | 측정되지 않음으로 결코 부르지 않는 파일. ignore의 glob 문법을 쓰며, 기본값은 헤더 전용 및 선언 전용 파일입니다. 폴더별. |
hotspots.crapThreshold | 30 | 이 CRAP 점수 이상인 함수는 risk hotspot으로, Coverage 보기의 트리 아래에 가장 나쁜 것부터 나열됩니다 — 30은 이 지표의 저자들이 제안한 수치입니다. 순환 복잡도를 담은 보고서에만 있습니다. 폴더별. |
hotspots.complexityThreshold | 0 | 이 정도 이상으로 복잡한 함수도 커버리지와 관계없이 hotspot입니다. 0이면 꺼집니다. 폴더별. |
gitDiff.enabled | false | 기준 ref 대비 변경된 행으로 커버리지를 제한합니다. 폴더별. |
gitDiff.baseRef | origin/master | 차이 커버리지를 위한 Git 기준 ref. 폴더별. |
externalHtmlReport.dir | "" | Annotated Source용으로 미리 생성된 llvm-cov show HTML 디렉터리를 읽습니다. 폴더별. |
htmlReport.outputDir | "" | Generate Full HTML Report의 출력 디렉터리. 폴더별. |
badge.outputPath | coverage-badge.svg | Generate Coverage Badge가 SVG를 기록할 위치 — 작업 영역 폴더 기준 상대 경로 또는 절대 경로, coverageFile.defaultLocation과 같은 변수 사용 가능. 상위 폴더는 만들어집니다. 폴더별. |
badge.metric | lines | lines | branches | mcdc | weighted: 배지에 표시할 실행 전체 수치(weighted는 상태 표시줄의 종합 점수). 데이터가 없으면 → 회색 n/a. 폴더별. |
badge.autoUpdate | false | 성공한 로드마다 배지를 조용히 다시 기록합니다([FUCINI_BADGE]로 로그에 남김). 폴더별. |
표시 및 분석
| 설정 | 기본값 | 기능 |
|---|---|---|
mcdcGutter.enabled | false | 색상 MC/DC 여백 표시줄. |
statusBar.enabled | true | 실행 전체 및 파일별 상태 표시줄 항목을 표시합니다. |
statusBar.showLauncher | true | 항상 사용할 수 있는 빠른 메뉴 실행기. |
statusBar.showModeToggle | true | 거터 모드 이름을 보여 주는 상태 표시줄 버튼; 클릭하면 다음 모드로 한 단계 넘어갑니다. |
codeLens.enabled | true | 함수별 커버리지 CodeLens. |
deadCode.enabled | true | 커버리지가 0인 함수를 경고합니다. |
staleWarning.enabled | true | 내용이 더 이상 실행 결과와 일치하지 않는 파일을 표시합니다. |
explorerBadges.enabled | false | 탐색기에서 파일 옆의 커버리지 배지와 호버. |
coverageFile.rememberPicks | true | 선택한 모든 파일을 coverageFile.paths에 기록합니다. |
coverageFile.sources | [] | 둘 이상의 보고서가 파일을 측정할 때 그 파일의 수치를 어느 로드된 보고서에서 가져올지: 순서가 있는 { "files": glob, "report": glob } 규칙이며, 처음 일치하는 규칙이 결정합니다. "combine": "union"(어느 보고서든 실행한 줄은 커버됨) 또는 "agree"(모든 보고서가 실행한 경우에만, 불일치는 청록색)를 지정하면 일치하는 보고서들이 결합됩니다. 유료 플랜. 폴더별. |
coverageFile.mergeStrategy | newest | 어떤 규칙도 정하지 않는 파일의 경우: newest(마지막에 기록된 보고서가 이김) 또는 order(시간과 상관없이 coverageFile.paths에서 뒤에 있는 항목이 이김). 폴더별. |
sinceLastRun.enabled | true | 이전 실행 이후 커버리지가 바뀐 줄의 거터 표시. |
dirtyMarks.enabled | true | 실행이 로드된 이후 편집된 줄의 회색 거터 점. |
editorGutter.mode | off | off | uncovered | coverage | heatmap: 위의 발견 사항 외에는 아무것도 없음, 커버되지 않은(그리고 부분적으로 커버된) 줄에만 막대, 거기에 더해 커버된 모든 줄에 초록 막대, 또는 거기에 더해 실행된 모든 줄에 실행 횟수에 따른 따뜻한 색조. 폴더별. |
lineHighlight | off | off | uncovered | coverage | heatmap: 여백이 표시하는 내용에 맞춰 줄 자체 뒤에 반투명한 색을 깝니다. 별도 설정이므로 여백은 깨끗하게 두고 빈틈만 칠하거나 그 반대로 할 수 있습니다. 폴더별. |
overviewRuler | follow | follow | uncovered | off: 커버되지 않은 줄이 스크롤 막대의 개요 눈금자에 줄무늬를 얻을지 여부. uncovered는 여백이 꺼져 있어도 그리므로, 코드 옆에는 아무것도 없이 스크롤 막대에 파일의 빈틈 지도만 남습니다. off는 막대는 두고 줄무늬만 없앱니다. 폴더별. |
hitCounts.inline | false | 문장이 시작하는 모든 줄 뒤에 ×N, ×0 포함. 폴더별. |
testCoverage.publish | true | 로드된 모든 실행을 VS Code 자체의 Test Coverage 보기(Test Explorer 패널, Explorer 백분율, Show Inline Coverage)에 게시합니다. 끄면 Test Explorer에 Fucini Coverage 항목이 없으며, Show in Test Coverage View는 여전히 요청 시 게시합니다. |
coverageView.perspective | folders | Coverage 보기가 보여 주는 트리: 워크스페이스의 폴더와 파일, 또는 — 클래스 이름을 담은 .NET 보고서(Cobertura, Coverlet, OpenCover)에서는 — 네임스페이스, 클래스, 메서드로, 각각 자기 수치를 가집니다. 보기의 드롭다운이 이 값을 씁니다. 실행이 클래스 이름을 담고 있을 때만 제공됩니다. |
coverageView.mergedMarks | true | 여러 트레이스 파일을 로드한 경우: 이전 보고서의 수치를 덮어쓴 모든 파일의 트레이스 파일 배지에 테두리를 표시하고, 트레이스 파일 행을 클릭하면 해당 파일이 측정한 파일을 강조할 수 있게 합니다. 끄면 일반 배지만 표시되고 강조는 없습니다. 트레이스 파일 행은 여전히 덮어쓰인 개수를 셉니다. |
excludeComments | true | 주석/빈 줄 & LCOV_EXCL_* 줄, 그리고 C, C++, Objective-C, CUDA, C#의 전처리기 지시문을 제외합니다. |
excluded.includeInTotals | false | 제외된 줄을 합계에 포함합니다. |
기록
| 설정 | 기본값 | 기능 |
|---|---|---|
history.enabled | false | 추세와 비교를 위해 실행 기록을 로컬에 저장합니다. |
history.retention | 20 | 보관할 최대 실행 수. |
상태 표시줄 빠른 작업
마지막 둘을 제외하고 모두 기본값은 false입니다. 빠른 메뉴에 해당 작업을 추가하려면 활성화하세요: quickActions.compareWithLastRun, openAnnotatedSource, openAnnotatedSourceToSide, toggleAnnotatedSource, toggleWatch, worstCoveredFiles, worstCoveredFolders, worstCoveredFunctions, nextUncovered, previousUncovered, checkThresholds, copyUncoveredLines, compareHistoryRuns, exportJson, exportReport, generateBadge, showTestCoverage, chooseGutterMode, toggleInlineHitCounts.
텔레메트리
| 설정 | 기본값 | 기능 |
|---|---|---|
telemetry.enabled | false | 사용 원격 분석, 기본값 꺼짐. Community 등급에서는 Unlock Full Features가 이를 대가로 MC/DC를 포함한 모든 Pro 기능을 30일 동안, 컴퓨터당 한 번 엽니다. 유료 라이선스는 영향을 받지 않습니다. 무엇이 전송되는지는 개인정보 처리방침을 참조하세요. 일간 요약과 제거 알림은 VS Code 자체의 telemetry.telemetryLevel에도 따릅니다. 설치 알림과 몇 가지 작은 이벤트는 따르지 않습니다. |
업데이트
| 설정 | 기본값 | 기능 |
|---|---|---|
update.checkForUpdates | true | fucini.software와 VS Code 마켓플레이스를 주기적으로 확인해 더 새로운 릴리스를 설치하도록 제안합니다. |
라이선스
| 설정 | 기본값 | 기능 |
|---|---|---|
license.key | "" | 평가용 사전 릴리스의 활성화 키(FCK1.… 형식 문자열)입니다. 이 컴퓨터/사용자에 연결되며 만료일과 기능별 제한이 있을 수 있습니다. 평가 및 활성화를 참조하세요. |