[AI + MFC] ChatGPT로 오래된 MFC 코드 분석해보기

 오래된 MFC 프로젝트를 유지보수하다 보면 예전에 작성한 코드에서 문제점을 발견하는 경우가 있다.

이번에는 ChatGPT를 이용해 메모리 관리와 예외처리가 부족한 MFC 코드를 분석하고 개선해 보자.

1. 기존 MFC 코드의 문제점

파일을 읽어 메모리에 저장하는 간단한 예제다.

CFile file(strPath, CFile::modeRead);

UINT nSize = (UINT)file.GetLength();
BYTE* pBuffer = new BYTE[nSize];

UINT nRead = file.Read(pBuffer, nSize);

if (nRead == 0)
    return;

delete[] pBuffer;

코드가 간단하지만 문제가 있다.

  • return 발생 시 메모리 누수 가능

  • 파일 처리 중 예외 발생 가능

  • 큰 파일의 크기 변환 문제

  • 실제 읽은 크기에 대한 검증 부족

2. ChatGPT로 코드 분석하기

ChatGPT에 다음과 같이 요청했다는 가정으로 진행한다.

MFC/C++ 코드를 분석해 줘.

조건:
1. 기존 구조 유지
2. 최소한의 코드 수정
3. 메모리 누수 방지
4. 예외처리 추가
5. 문제점과 수정 이유 설명

중요한 것은 기존 구조 유지와 최소 변경 조건을 명확하게 전달하는 것이다.

3. AI 분석을 반영한 개선 코드

메모리를 직접 관리하는 대신 std::vector를 사용하고 예외처리를 추가했다.

#include <vector>
#include <new>

void ReadFile(CString strPath)
{
    try
    {
        CFile file(
            strPath,
            CFile::modeRead | CFile::shareDenyNone
        );

        ULONGLONG nSize = file.GetLength();

        if (nSize == 0 || nSize > 8ULL * 1024 * 1024)
            return;

        std::vector<BYTE> buffer(
            static_cast<size_t>(nSize)
        );

        UINT nRead = file.Read(
            buffer.data(),
            static_cast<UINT>(buffer.size())
        );

        if (nRead != buffer.size())
            return;

        AfxMessageBox(_T("파일 읽기 완료"));
    }
    catch (CFileException* e)
    {
        e->Delete();
        AfxMessageBox(_T("파일 처리 오류"));
    }
    catch (const std::bad_alloc&)
    {
        AfxMessageBox(_T("메모리 할당 오류"));
    }
}

기존 코드와 비교하면 다음과 같다.

구분기존개선
메모리 관리new/deletestd::vector
예외처리없음예외 처리 추가
파일 크기제한 없음최대 8MB
읽기 검증0 여부만 확인요청 크기 비교

4. 빌드 및 기능 검증

Visual Studio 2022 MFC 프로젝트에서 다음 항목을 테스트하면 된다.

테스트예상 결과
정상 파일읽기 완료
빈 파일처리 종료
8MB 초과 파일처리 종료
존재하지 않는 파일오류 메시지
메모리 할당 실패오류 메시지

※ 위 결과는 예상 결과이며 실제 빌드 및 실행 테스트는 진행하지 않았다.

5. AI가 놓칠 수 있는 부분과 결론

ChatGPT로 코드 분석을 하면 메모리 누수나 예외처리 누락 같은 문제를 찾는 데 도움이 된다.

하지만 AI가 수정한 코드에도 확인해야 할 부분이 있다.

  • UI 스레드에서 큰 파일을 읽으면 화면이 멈출 수 있다.

  • 파일 공유 방식과 예외처리가 기존 동작에 영향을 줄 수 있다.

  • 실제 빌드와 메모리 누수 검증은 개발자가 해야 한다.

결국 AI는 코드 분석을 도와주는 도구이고, 최종 검증은 개발자의 몫인 것 같다.

오래된 MFC 코드를 유지보수할 때 AI를 보조 코드 리뷰어로 활용하면 꽤 유용할 듯하다.

참고 자료


댓글

이 블로그의 인기 게시물

[잡담] 윈도우 10 초기화 후 사내 서버나 네트워크 서버 접속이 안될때!

[잡담] 주연 LIONINE Q32CKR HDR WQHD 리얼144 커브드 모니터 구입

[MFC] Windows 10 OCR 만들기 : OCR 적용하기(tesseract)