OCR 위험 구간 상세 분석
위험 분류 기준
- 높음: 수동 리뷰 필수, 자동 전환 불가
- 중간: 샘플 검증 후 전환 가능
- 낮음: 자동 전환 권장
위험 구간 목록
높음 위험 (4개)
1. api_parser.c - 파서 상태머신
// 위험 구간: parser_state_t enum 및 상태 전이
typedef enum {
PARSER_INIT,
PARSER_HEADER,
PARSER_BODY,
PARSER_COMPLETE,
PARSER_ERROR
} parser_state_t;
// 위험 구간: 중첩 switch-case
switch (state) {
case PARSER_HEADER:
switch (field_type) {
// ...
}
}
2. db_migrator.c - 스키마 diff 로직
// 위험 구간: 테이블 비교 알고리즘
int compare_columns(column_t* a, column_t* b) {
// 복잡한 비교 로직
}
3. net_protocol.c - 프로토콜 상태머신
// 위험 구간: 바이너리 프로토콜 파싱
switch (packet_type) {
case PKT_HANDSHAKE:
// ...
case PKT_DATA:
// ...
}
4. utils_string.c - 인코딩 변환
// 위험 구간: 멀티바이트 문자 처리
size_t convert_encoding(char* out, const char* in, enc_t from, enc_t to) {
// EUC-KR, UTF-8, ISO-2022-KR 변환
}
중간 위험 (6개)
| 파일 |
구간 |
위험 이유 |
| api_handler.c |
콜백 레지스트리 |
함수 포인터 배열 초기화 |
| api_router.c |
동적 라우트 테이블 |
해시맵 구현체 |
| db_query.c |
트랜잭션 처리 |
에러 코드 매핑 |
| net_client.c |
SSL 핸드셰이크 |
OpenSSL 콜백 |
| crypto_cipher.c |
키 관리 |
키 파생 함수 |
| utils_config.c |
설정 파싱 |
토큰 파싱 로직 |
낮음 위험 (8개)
| 파일 |
구간 |
비고 |
| api_validator.c |
스키마 검증 |
단순 검증 로직 |
| db_connector.c |
연결 풀 관리 |
표준 인터페이스 |
| net_server.c |
소켓 옵션 |
표준 소켓 API |
| net_buffer.c |
메모리 풀 |
단순 할당 래퍼 |
| crypto_hash.c |
HMAC 처리 |
표준 OpenSSL |
| crypto_random.c |
엔트로피 소스 |
단순 래퍼 |
| utils_logger.c |
로그 로테이션 |
표준 파일 I/O |
| utils_timer.c |
타이머 큐 |
단순链表 |
OCR 리스크 완화 전략
- 높음 위험: 전문 리뷰어 수동 검토, 테스트 케이스 보강
- 중간 위험: 샘플 입력으로 검증, 커버리지 테스트 작성
- 낮음 위험: 자동 전환 후 기본 테스트만 수행