이 튜토리얼에서는 Clang 도구를 활용하여 C/C++ 코드 포맷팅(서식 정리) 도구를 직접 만드는 방법을 소개합니다. 몇 줄의 파이썬 스크립트와 clang-format만 있으면 프로젝트 전체의 코드 스타일을 손쉽게 일관성 있게 유지할 수 있습니다.
1. 환경 설정
먼저 필요한 패키지를 설치합니다. 파이썬과 clang-format을 설치하면 됩니다.
sudo apt install python
sudo apt install clang-format-3.5
설치가 완료되면 현재 사용자가 읽기 및 쓰기 권한을 가진 위치에 파이썬 파일을 하나 생성합니다.
2. 포맷팅 스크립트 작성
아래 예제 코드는 현재 디렉터리와 하위 디렉터리를 모두 탐색하면서 C/C++ 관련 확장자를 가진 파일을 자동으로 찾아 clang-format으로 서식을 정리하는 스크립트입니다.
예제 코드
import os
cpp_extensions = (".cxx", ".cpp", ".c", ".hxx", ".hh", ".cc", ".hpp")
for root, dirs, files in os.walk(os.getcwd()):
for file in files:
if file.endswith(cpp_extensions):
os.system("clang-format-3.5 -i -style=file " + root + "/" + file)
스크립트가 실행되면 os.walk()가 현재 작업 디렉터리를 재귀적으로 순회하고, 지정된 확장자(.c, .cpp, .hpp 등)에 해당하는 모든 파일에 대해 clang-format이 자동으로 적용됩니다.
3. 코드 스타일 설정 파일 생성
다음으로, 현재 사용자의 최상위 디렉터리에 코드 포맷팅 규칙을 담은 설정 파일을 생성합니다. 아래 명령어는 Google 코딩 스타일 기준의 설정 파일을 만들어 줍니다.
출력
clang-format-3.5 -style=google -dump-config > .clang-format
생성된 .clang-format 파일을 현재 진행 중인 프로젝트의 최상위 디렉터리로 복사합니다. 이렇게 하면 clang-format이 해당 프로젝트 내에서 이 스타일 규칙을 자동으로 인식하여 적용합니다.
4. 사용 방법
모든 준비가 끝났습니다. 이제 프로젝트 루트에서 앞서 만든 파이썬 스크립트만 실행하면, 프로젝트 내 모든 C/C++ 소스 파일과 헤더 파일의 코드 스타일이 한 번에 정리됩니다.
python format_code.py
이처럼 Clang 도구와 간단한 파이썬 스크립트를 조합하면, 팀 단위 개발에서도 일관된 코딩 컨벤션을 유지하는 자동화된 코드 포맷팅 도구를 손쉽게 구축할 수 있습니다.