경계
jam-lite
이 저장소의 jam 바이너리만 사용합니다. 구조, 크기, 복잡도, 중복, 명백한 보안 패턴, 리소스, 위생 지표를 오프라인 정적 스캔으로 계산합니다.
jam-full
test-cli와 security-cli의 표준 JSON을 읽어 test/security 점수를 합성합니다. 외부 도구가 없거나 리포트가 깨지면 infrastructure failure로 분류합니다.
실행
commandslite/full
jam lite . --json --sarif --strict --out reports/jam
jam full . --out reports/jam-full
jam full . --component security --out reports/jam-security
jam full . --component test --out reports/jam-test
jam full . --skip-test --security-profile release --out reports/release
도구 탐색 순서
- 명령행 플래그:
--test-cli,--security-cli PATH의test-cli,security-cli- 개발 fallback:
~/git/test-cli,~/git/security-cli,~/git/cli/security-cli
합성 점수
| 실행 | effective weight | 용도 |
|---|---|---|
| 기본 full | lite 0.50, test 0.25, security 0.25 | 프로덕션 준비도 종합 판단 |
--component security | lite 0.667, security 0.333 | 테스트 증적 없이 보안만 추가 |
--component test | lite 0.667, test 0.333 | 보안 도구 없이 테스트만 추가 |
하위 지표
jam-full은 외부 CLI의 원본 JSON을 다시 복사하지 않고, 합성 점수에 사용한 해석 결과를
components[].metrics로 기록합니다. 제공되지 않은 신호는 not_assessed로 표시하고 내부 가중치에서 제외합니다.
| 컴포넌트 | 지표 | 목적 | 가중치 |
|---|---|---|---|
| test | TEST-PASS | 실행 테스트 통과율 | 0.25 |
| test | TEST-LINE-COV | 라인 커버리지 | 0.20 |
| test | TEST-BRANCH-COV | 분기 커버리지 | 0.12 |
| test | TEST-EVIDENCE | suite/file 증거 강도 | 0.10 |
| test | TEST-COV-TAIL | 저커버리지 파일 tail | 0.08 |
| test | TEST-DENSITY | coverable KLOC 대비 테스트 수 | 0.12 |
| test | TEST-SOURCE-COV | coverage 대상의 소스 파일 비율 | 0.10 |
| test | TEST-SKIP-RISK | skipped test 비율 | 0.02 |
| test | TEST-DURATION-TAIL | 느린 테스트 p95 | 0.01 |
| security | SEC-SEVERITY | critical/high/medium 부담 | 0.25 |
| security | SEC-POLICY | CI policy 실패/경고 | 0.18 |
| security | SEC-CATEGORY | secret/SCA/IaC 등 카테고리 위험 | 0.12 |
| security | SEC-FIXABILITY | 취약 패키지 fixed version 비율 | 0.10 |
| security | SEC-SUPPRESSION | suppression 남용 신호 | 0.05 |
| security | SEC-TOOLCHAIN | 스캐너/DB 상태 | 0.12 |
| security | SEC-CVSS | 최대 CVSS 점수 | 0.10 |
| security | SEC-CWE | 고위험 CWE 태그 | 0.08 |
실패 분류
status=failed는 품질 게이트 실패라 exit 1입니다. status=error는 측정 인프라 실패라 exit 4입니다.
reason은 자동 분류와 대시보드 집계를 위해 JSON에 기록됩니다.
| reason | 의미 | status |
|---|---|---|
no_test_evidence | 테스트/커버리지 증적이 없음 | failed |
quality_gate | 테스트 실패 또는 에러 | failed |
security_policy | security-cli 정책 실패 | failed |
tool_unavailable | 외부 CLI를 찾을 수 없음 | error |
remote_rate_limit | SCA 원격 저장소 rate limit | error |
report_invalid | 리포트 JSON 파싱 실패 | error |