CodeMender는 cm find 명령을 통해 세 가지 고유한 스캔 모드를 제공합니다.
각 모드는 소프트웨어 개발 수명 주기의 특정 단계를 위해 설계되었으며 속도, 범위, 깊이의 균형을 유지합니다.
찾기 모드 비교
다음 표에서는 세 가지 cm find 스캔 모드를 비교합니다.
| 모드 | 명령어 | 타겟 범위 | 일반적인 런타임 | 용도 |
|---|---|---|---|---|
| 표준 검색 | cm find PATH |
지정된 디렉터리 | 적당한 런타임 | 로컬 개발자 검색, 빠른 확인, 탐색적 리뷰 |
| 차이점 스캔 | cm find PATH --diff[=REF] |
수정된 파일과 종속 파일 (예: 호출자 및 피호출자) | 빠른 런타임 | pull 요청 CI/CD 파이프라인 (GitHub Actions, Cloud Build), 사전 커밋 후크 |
| 정밀 검사 | cm find PATH --deep |
전체 저장소 | 더 긴 런타임 | 정기 감사, 출시 준비, 규정 준수 인증 (SOC 2, ISO) |
표준 스캔 (기본값)
표준 검색은 추가 검색 플래그를 제공하지 않고 cm find를 실행할 때의 기본 모드입니다. 지정된 타겟 디렉터리의 단일 세션 자율 스캔을 실행합니다. 스캔 중에 CodeMender는 소스 파일을 검색하고, 취약점 패턴에 따라 우선순위를 지정하고, 초기 보안 분석을 실행하고, 심각도와 유형별로 그룹화된 잠재적 취약점을 보고합니다.
다음 예에서는 타겟 디렉터리에서 표준 검사를 실행하는 방법을 보여줍니다.
# Scan a directory using the default model
cm find ./src
# Scan with a specific Gemini model
cm find ./src --model gemini-3.8-flash
강점
표준 스캔은 구성이 필요하지 않으며 추가 플래그나 매개변수가 필요하지 않습니다. 속도와 커버리지를 균형 있게 유지하면서 적당한 런타임을 사용하고 토큰과 컴퓨팅을 최소한으로 사용하여 일상적인 개발에 비용 효율적입니다.
장단점 및 제한사항
표준 스캔은 대규모 코드베이스에서 재현율이 낮으며 단일 세션 컨텍스트 내에서 작동하므로 대규모 멀티 패키지 엔터프라이즈 저장소의 모든 파일을 탐색하지 않을 수 있습니다. 또한 개별 파일 내의 로컬 패턴에 주로 초점을 맞추므로 교차 패키지 분석이 제한되고 멀리 떨어진 패키지에 걸쳐 있는 취약점이 누락될 수 있습니다.
사용 시기
다음 시나리오에서는 표준 스캔을 사용하세요.
- 변경사항을 커밋하기 전에 로컬 머신에서 검사를 실행하여 로컬 개발 중에 빠른 의견을 받으세요.
- 새로 클론된 저장소나 소규모 프로젝트를 검사하여 보안 상황을 초기 평가합니다.
- 잠재적인 문제를 조사할 때 특정 하위 디렉터리 또는 모듈을 검사합니다.
차이점 스캔
차이 스캔은 수정된 파일과 추가된 파일을 검사하여 pull 요청 워크플로 및 CI/CD 파이프라인에 대한 Git 차이 분석을 실행하며, 변경된 정확한 줄 범위 (차이 청크)에 중점을 둡니다. 변경된 행을 검사하는 것 외에도 수정된 함수와 심볼을 호출하거나 가져오거나 이에 종속되는 저장소의 터치되지 않은 파일을 검색하기 위해 영향 분석을 실행합니다. 이렇게 하면 한 파일에서 계약이나 함수 서명을 변경해도 종속 파일에 취약점이 발생하지 않습니다.
스캔 중에 CodeMender는 건드리지 않은 코드의 기존 취약점을 자동으로 격리하므로 기존 문제로 인해 스캔이 실패하거나 pull 요청이 차단되지 않습니다. 그런 다음 --fail-on 정책에 따라 결과를 평가하고 표, JSON 또는 SARIF v2.1.0 형식으로 결과를 출력합니다.
다음 예에서는 작업 사본 변경사항, 스테이징된 변경사항 또는 타겟 브랜치에 대해 차이 스캔을 실행하는 방법을 보여줍니다.
# Scan working copy changes versus HEAD
cm find . --diff
# Scan staged changes only (pre-commit)
cm find . --diff --staged
# Scan a pull request branch against the main branch in CI/CD
cm find . --diff=origin/main --format=sarif --output=results.sarif \
--fail-on=CRITICAL,HIGH
엔드 투 엔드 파이프라인 구성은 CI/CD와 통합을 참고하세요.
강점
차이 스캔은 빠르고 결정적이며, 일반적으로 2분 이내에 완료되어 CI/CD 파이프라인 런타임을 짧게 유지합니다. 변경된 줄만 검사하는 차이 스캐너와 달리 --diff는 호출자와 피호출자 관계를 검사하여 교차 파일 보안 회귀 및 계약 위반을 포착합니다. 변경되지 않은 코드의 결과를 억제하므로 변경사항으로 인해 도입되거나 영향을 받는 문제에 대한 풀 요청만 차단하여 과도한 보고서와 불필요한 빌드 실패를 방지합니다. 차이점 스캔은 GitHub 코드 스캔 주석 및 Cloud Build 대시보드에 직접 통합하기 위해 SARIF v2.1.0도 내보냅니다.
장단점 및 제한사항
diff 스캔은 pull 요청의 영향을 받는 영역 내의 코드만 분석하며 저장소의 수정되지 않은 부분에 있는 기존 취약점은 찾지 않습니다. 또한 대상 기본 참조에 액세스할 수 있는 Git 저장소가 필요합니다.
사용 시기
다음 시나리오에서는 차이 스캔을 사용하세요.
- GitHub Actions, Cloud Build, GitLab CI, Jenkins와 같은 CI/CD 파이프라인에서 모든 pull 요청에 대해 자동 검사를 실행합니다.
- 원격 저장소에 코드를 푸시하기 전에 커밋 전 또는 푸시 전 후크에서 로컬 변경사항이 깨끗한지 확인합니다.
- 버전 브랜치 간 병합으로 인해 회귀가 발생하지 않는지 확인합니다.
정밀 검사
심층 스캔은 포괄적인 저장소 전체 보안 감사를 위해 설계된 철저한 스캔 모드입니다. 병렬 작업자 (--deep-workers로 구성되며 기본값은 8이고 1~16 지원)를 사용하여 전체 저장소의 소스 파일을 동시에 감사합니다. 후보 발견 사항을 발견하면 주변 코드 컨텍스트에 대해 검증하고 확인하여 결과를 보고하기 전에 거짓양성을 필터링합니다.
다음 예에서는 저장소 전체에서 전체 검사를 실행하는 방법을 보여줍니다.
# Run an exhaustive deep scan across the entire repository
cm find . --deep
# Tune concurrency and use the cyber-specialized security model
cm find . --deep --deep-workers=8 --model=gemini-3.8-flash-cyber
강점
심층 스캔은 대규모 엔터프라이즈 코드베이스에서 높은 재현율과 포괄적인 취약점 검색을 제공하며, 단일 세션 스캔보다 성능이 우수하고 자동화된 검증을 사용하여 높은 정밀도를 유지합니다. 여러 언어를 지원하며 플랫폼에 구애받지 않아 언어별 컴파일러, 빌드 설정, 문법 파일 없이도 Gemini에서 지원하는 모든 언어에서 작동합니다. 또한 프로덕션 코드에 분석을 집중하고 비프로덕션 파일의 컴퓨팅 및 토큰 소비를 최소화하여 리소스 사용을 최적화합니다.
장단점 및 제한사항
심층 검사를 풀 요청을 차단하는 동기식 검사로 사용하지 마세요. 심층 스캔은 저장소 전체에 대한 철저한 분석을 실행합니다. 따라서 표준 또는 차이 스캔보다 런타임이 길고 토큰 사용량이 많습니다.
사용 시기
다음 시나리오에서는 전체 스캔을 사용하세요.
- 모든 프로덕션 저장소에서 야간 또는 주간 일정에 따라 예약된 보안 감사를 실행합니다.
- 메이저 버전 출시 또는 프로덕션 배포 전에 전체 출시 전 보안 감사를 실행합니다.
- SOC 2, ISO 27001, FedRAMP 또는 PCI-DSS 규정 준수 및 인증 검토를 위한 감사 증거를 생성합니다.
- 새 코드베이스를 CodeMender에 온보딩할 때 초기 보안 기준을 설정합니다.
찾기 모드 선택
다음 참조 표를 사용하여 워크플로에 적합한 스캔 모드를 선택하세요.
| 워크플로 또는 환경 | 사용 사례 및 목표 | 권장 모드 | 명령어 예 |
|---|---|---|---|
| 로컬 터미널 | 특정 모듈에 대한 빠른 검색 또는 신뢰도 확인 | 표준 검색 | cm find ./src |
| 로컬 터미널 | 푸시하기 전에 스테이징된 변경사항에 대한 사전 커밋 확인 | 차이점 스캔 | cm find . --diff --staged |
| CI/CD 파이프라인 | 변경된 코드 및 호출자에 대한 자동 pull 요청 게이팅 | 차이점 스캔 |
cm find . --diff=origin/main --fail-on=CRITICAL,HIGH
|
| 예약된 파이프라인 또는 감사 | 야간 감사, 출시 전 게이트, SOC 2 규정 준수 | 정밀 검사 | cm find . --deep --deep-workers=8 |
모드별 명령어 플래그 참조
다음 표에서는 각 스캔 모드에서 지원하는 명령줄 플래그를 설명합니다.
일반 플래그 (모든 모드)
다음 플래그는 모든 cm find 스캔 모드에 적용됩니다.
| 플래그 | 기본값 | 설명 |
|---|---|---|
-c, --context TEXT |
"" |
아키텍처 메모와 같이 스캔 에이전트를 안내하는 추가 컨텍스트입니다. |
--model MODEL_NAME |
gemini-3.8-flash |
사용할 Gemini 모델 (gemini-3.8-flash,
gemini-3.8-flash-cyber)
|
-y, --yes |
false |
모든 대화형 확인 프롬프트를 건너뜁니다. |
--unrestricted |
false |
파일 시스템 샌드박스를 사용 중지합니다. |
변경사항 스캔 플래그
다음 플래그는 cm find --diff 검색을 구성합니다.
| 플래그 | 기본값 | 설명 |
|---|---|---|
--diff[=REF] |
사용 안함 |
origin/main 또는 HEAD~1과 같은 타겟 참조에 대해 차이 모드를 사용 설정합니다. REF이 없으면 HEAD과 비교합니다. --deep와 함께 사용할 수 없습니다.
|
--staged |
사용 안함 |
스테이징된 색인 (git diff --cached)으로만 범위를 지정합니다.
--diff이 필요합니다.
|
--diff-depth DEPTH |
1 |
영향 분석의 순회 깊이 (1~3, 기본값: 1홉). |
--diff-workers COUNT |
4 |
pull 요청 감사 작업의 동시 작업자 수 (1~16)입니다. |
--diff-max-neighbors COUNT |
10 |
검사할 종속 호출자 또는 호출 수신자 파일의 최대 개수입니다. |
--fail-on SEVERITIES |
CRITICAL,HIGH |
cm find가 코드 1로 종료되도록 하는 심각도(쉼표로 구분)입니다.
|
--fail-on-truncation |
사용 안함 | 이웃 검색이 상한을 초과하면 코드 1로 종료 |
--format FORMAT |
table |
출력 형식: table, json, sarif
|
--output FILE |
표준 출력 | 표준 출력 대신 파일에 보고서를 작성합니다. |
정밀 검사 플래그
다음 플래그는 cm find --deep 검색을 구성합니다.
| 플래그 | 기본값 | 설명 |
|---|---|---|
--deep |
false |
전체 저장소에 대한 철저한 정밀 검사를 사용 설정합니다. --diff와 함께 사용할 수 없습니다.
|
--deep-workers COUNT |
8 |
정밀 검사를 위한 동시 작업자 수 (1~16)입니다. |