[c++] clang-format ( Like yapf)

About_work·2024년 10월 27일
0

c++

목록 보기
16/17

1. 기초 사용법 정리

C++ 코드의 스타일을 자동으로 정리하고 형식을 맞추기 위해, Python에서 yapf처럼 C++에도 비슷한 도구를 사용할 수 있습니다. 가장 널리 사용되는 도구는 clang-format이며, 이 도구는 C++, C, 그리고 Objective-C 코드의 형식을 자동으로 맞춰줍니다. clang-format은 Google Style을 포함한 다양한 코드 스타일을 지원합니다. 다음은 CLI(Command Line Interface) 명령어를 통해 C++ 코드에 Google 스타일을 적용하는 방법입니다.

1. clang-format 설치하기

먼저 clang-format을 설치해야 합니다. 아래의 명령어로 설치할 수 있습니다:

Ubuntu (Debian 계열)

sudo apt install clang-format

macOS

brew install clang-format

Windows

  • Windows에서는 LLVM 공식 사이트에서 다운로드하거나, choco를 통해 설치할 수 있습니다.
choco install llvm

2. clang-format 사용하여 C++ 코드 정리하기

clang-format을 사용하여 C++ 코드를 Google 스타일로 정리하는 명령어는 다음과 같습니다:

clang-format -i -style=Google your_code.cpp

명령어 설명

  • clang-format: 코드 스타일을 자동으로 정리해주는 도구입니다.
  • -i: 파일을 직접 수정(in-place) 합니다. 즉, 코드를 정리한 뒤 파일에 저장합니다.
  • -style=Google: Google 코드 스타일을 사용하여 형식을 맞춥니다. Google 스타일은 명확한 가독성을 유지하는데 집중하는 방식으로, C++에서 널리 사용됩니다.
  • your_code.cpp: 스타일을 맞추려는 C++ 파일 이름입니다.

3. 여러 파일에 적용하기

여러 파일에 동일한 명령어를 적용하고 싶다면, 와일드카드를 사용할 수 있습니다. 예를 들어, 현재 디렉터리의 모든 .cpp.h 파일에 Google 스타일을 적용하려면:

clang-format -i -style=Google *.cpp *.h

4. .clang-format 설정 파일을 통한 스타일 적용

프로젝트 전체에 동일한 스타일을 유지하고 싶다면, .clang-format이라는 설정 파일을 프로젝트 디렉터리에 만들어 사용할 수 있습니다. 이 파일에 스타일을 정의해 두면, 여러 명령을 반복하지 않아도 동일한 스타일로 코드를 형식화할 수 있습니다.

.clang-format 파일 생성하기

clang-format -style=Google -dump-config > .clang-format
  • 이 명령은 현재 디렉터리에 .clang-format 파일을 생성하며, 파일 내에는 Google 스타일의 기본 설정이 저장됩니다.
  • 생성된 .clang-format 파일을 직접 수정하여 필요한 설정을 추가하거나 변경할 수 있습니다.

설정 파일을 사용한 코드 정리

.clang-format 설정 파일을 기반으로 C++ 코드를 정리하려면 다음 명령어를 사용합니다:

clang-format -i your_code.cpp

이 경우 -style 옵션을 생략하면, clang-format은 디렉터리에 있는 .clang-format 파일을 사용해 형식을 정리합니다.

5. 예시

example.cpp라는 파일을 Google 스타일로 정리하려면:

clang-format -i -style=Google example.cpp

기타 스타일

clang-format은 Google 스타일 외에도 여러 스타일을 지원합니다. 예를 들어:

  • LLVM: -style=LLVM
  • Microsoft: -style=Microsoft
  • Chromium: -style=Chromium
  • Mozilla: -style=Mozilla
  • WebKit: -style=WebKit

이 외에도 사용자 정의 스타일.clang-format 파일에 설정할 수도 있습니다.

요약

  • clang-format은 C++ 코드 스타일을 자동으로 정리하는 도구입니다.
  • Google 스타일로 C++ 코드를 정리하려면 clang-format -i -style=Google your_code.cpp 명령어를 사용하면 됩니다.
  • .clang-format 파일을 사용하면 프로젝트 전반에 동일한 코드 스타일을 쉽게 유지할 수 있습니다.

이 방법을 사용하면 Python의 yapf처럼 C++ 코드도 자동으로 형식을 맞추고, 일관된 스타일을 유지할 수 있습니다.


2. 여러 파일에 동시 적용

특정 폴더 디렉토리의 모든 하위 디렉토리에 있는 .cpp.h 파일들에 일괄적으로 clang-format을 적용하려면 재귀적 탐색을 통해 모든 파일을 찾아 clang-format을 실행해야 합니다. 이를 find 명령어와 함께 사용하여 쉽게 수행할 수 있습니다.

방법 1: findclang-format 사용하기 (Linux/MacOS)

find 명령어를 사용하여 특정 디렉토리 하위의 모든 .cpp.h 파일을 찾아 clang-format을 적용할 수 있습니다.

find /path/to/your/directory -name "*.cpp" -o -name "*.h" | xargs clang-format -i -style=Google

명령어 설명

  • find /path/to/your/directory: /path/to/your/directory 경로에서 파일을 찾는 명령어입니다. 하위 디렉토리까지 재귀적으로 탐색합니다.
  • -name "*.cpp" -o -name "*.h": 확장자가 .cpp이거나 .h인 파일을 찾습니다.
    • -o: 논리 OR 연산자로, .cpp 또는 .h 파일을 모두 찾습니다.
  • | xargs clang-format -i -style=Google: 찾은 파일 목록을 xargs를 사용해 clang-format에 전달합니다.
    • -i: 파일을 직접 수정(in-place) 합니다.
    • -style=Google: Google 스타일로 형식을 맞춥니다.

예시

예를 들어, 현재 디렉토리와 하위 디렉토리 내의 모든 .cpp.h 파일에 Google 스타일을 적용하려면 다음과 같이 실행합니다:

find . -name "*.cpp" -o -name "*.h" | xargs clang-format -i -style=Google

이 명령어는 현재 디렉토리(.)와 모든 하위 디렉토리에서 .cpp.h 파일을 찾고, 그 파일들을 clang-format으로 일괄적으로 정리합니다.

방법 2: find-exec 사용하기 (대안)

xargs 대신 -exec 옵션을 사용할 수도 있습니다. 이렇게 하면 각 파일에 대해 한 번씩 명령을 실행합니다.

find /path/to/your/directory -name "*.cpp" -o -name "*.h" -exec clang-format -i -style=Google {} +

명령어 설명

  • -exec: 각 파일에 대해 특정 명령을 실행합니다.
  • clang-format -i -style=Google {}: {}find로 찾은 파일의 경로를 나타내며, 각 파일에 대해 clang-format을 실행합니다.
  • +: 한 번에 여러 파일에 대해 명령을 실행하도록 합니다.

Windows 환경에서의 재귀적 적용 방법

Windows 환경에서는 PowerShell이나 Git Bash와 같은 Bash 환경을 통해 비슷하게 사용할 수 있습니다.

PowerShell에서 사용

PowerShell에서는 다음과 같이 재귀적으로 파일을 찾고 clang-format을 적용할 수 있습니다:

Get-ChildItem -Recurse -Include *.cpp, *.h | ForEach-Object { clang-format -i -style=Google $_.FullName }

설명

  • Get-ChildItem -Recurse: 현재 디렉토리와 모든 하위 디렉토리에서 파일을 검색합니다.
  • -Include *.cpp, *.h: .cpp.h 파일을 검색합니다.
  • ForEach-Object { clang-format -i -style=Google $_.FullName }: 각 파일에 대해 clang-format을 실행합니다.

요약

  • Linux/MacOS에서는 find 명령어를 사용해 모든 .cpp.h 파일을 찾아 clang-format으로 형식을 정리합니다.
  • Windows에서는 PowerShell이나 Git Bash를 사용해 재귀적으로 파일을 검색하고, 일괄적으로 형식을 정리할 수 있습니다.

이 명령어들을 사용하면 디렉토리 전체에 있는 .cpp.h 파일들에 대해 일관된 코드 스타일을 유지할 수 있습니다.

profile
새로운 것이 들어오면 이미 있는 것과 충돌을 시도하라.

0개의 댓글