Q1. Overwrite State 기능이란 무엇인가요?
다른 프로젝트의 결함 상태(Suppressed, False Alarm 등)를 현재 프로젝트로 가져오는 기능입니다.
두 프로젝트에서 동일한 소스 파일에 동일한 결함이 존재할 경우, 소스 프로젝트의 결함 상태를 대상 프로젝트에 그대로 반영합니다.
위치: Project Settings > Overwrite State
Q2. 어떤 경우에 사용하나요?
| 사용 시나리오 | 설명 |
|---|---|
| 다중 프로젝트 운영 | 통합 룰 프로젝트에서 처리한 suppressed 항목을 개별 룰 프로젝트에 반영 |
| 프로젝트 이관 | 이전 프로젝트에서 관리하던 결함 상태를 신규 프로젝트로 이관 |
| 프로젝트 복제 후 재분석 | 동일 소스를 다른 설정으로 재분석한 프로젝트에 기존 상태 적용 |
Q3. Overwrite가 되는 조건은 무엇인가요?
Overwrite State는 회차 간 결함 식별 방식과 동일한 메커니즘으로 동작합니다. 각 결함은 고유한 violation hash로 식별되며, 두 결함의 hash가 일치할 때 상태가 이관됩니다.
Violation Hash 결정 요소
| 요소 | 설명 |
|---|---|
| 파일 이름 | 소스 파일명이 동일해야 함 |
| 검출 라인 | 위배가 발생한 라인 번호 |
| 함수 내 검출 순서 | 동일 함수 내에서 같은 규칙이 검출된 순서 |
| 규칙 이름 | 위배된 규칙 식별자 |
| 검출 메시지 | 위배 내용을 설명하는 메시지 |
위 요소 중 하나라도 다르면 다른 결함으로 판단되어 상태가 이관되지 않습니다.
Q4. 소스 코드 일부가 달라도 Overwrite가 되나요?
네, 가능합니다. Hash는 소스 코드 내용 자체가 아닌 위 5가지 요소로 결정됩니다.
사례별 판단
| 사례 | Overwrite 가능 여부 | 이유 |
|---|---|---|
int a = 0; ↔ int a = 255; | 가능 | 변수명·규칙·메시지 모두 동일 |
int a = 0; ↔ float a = 1; | 가능 | 타입이 달라도 변수명이 같아 검출 메시지 동일 |
int a = 0; ↔ int b = 0; | 불가 | 변수명 다름 → 검출 메시지 다름 |
int a = 0; ↔ bool a = 0; | 불가 | 검출 메시지가 달라짐 |
| 줄바꿈으로 라인 번호 변경 | 불가 | 검출 라인이 다름 |
Q5. 파일 내 모든 결함이 동일해야 Overwrite가 되나요?
아닙니다. Overwrite는 파일 단위로 매칭하고, 결함은 개별적으로 이관됩니다.
- 두 프로젝트의 파일 내 결함 개수가 달라도 됩니다.
- 매칭된 파일 내에서 hash가 일치하는 결함만 상태가 이관되고, hash가 다른 결함은 이관되지 않습니다.
Q6. 사용 방법을 알려주세요.
- Project Settings > Overwrite State 메뉴 접속
- 소스 프로젝트 키 선택 (상태를 가져올 프로젝트)
- 파일 매칭 결과 확인
show all: 전체 파일 매칭 결과 표시show only success: 매칭 성공 파일만 표시show only fail: 매칭 실패 파일만 표시
- [Overwrite] 클릭하여 상태 이관 실행
- History 탭에서 Overwrite 이력 및 결과 확인
Q7. 주의사항이 있나요?
⚠ Overwrite 실행 전 반드시 프로젝트를 백업하세요.
Overwrite 과정에서 기존 결함 상태 정보가 손실될 수 있습니다.
- Overwrite는 되돌리기 어려운 작업입니다.
- 소스 프로젝트와 대상 프로젝트의 소스가 크게 다를 경우, 의도하지 않은 상태 이관이 발생할 수 있습니다.
- Overwrite 전
show only success/show only fail필터로 파일 매칭 현황을 반드시 확인하세요.
Q8. Overwrite 결과를 어떻게 확인하나요?
History 탭에서 이력을 확인할 수 있습니다.
| 항목 | 설명 |
|---|---|
| ID | 이력 순서 |
| Status | Overwrite 성공/실패 여부 |
| Source Project Key | 상태를 가져온 소스 프로젝트 키 |
| Start At | Overwrite 시작 시각 |
| Finish At | Overwrite 종료 시각 |
| Download | Overwrite 결과 파일 다운로드 |
아티클이 유용했나요?
훌륭합니다!
피드백을 제공해 주셔서 감사합니다.
도움이 되지 못해 죄송합니다!
피드백을 제공해 주셔서 감사합니다.
피드백 전송
소중한 의견을 수렴하여 아티클을 개선하도록 노력하겠습니다.