Child pages
  • Artistic Style - Source code Indenter, Formatter, and Beautifier, 각종 소스 파일을 들여쓰기, 포맷팅, 예쁘게 만들어 주기

Contents

개요

Artistic Style 은 cmd 기반 프로그램으로 source 파일에 대해 들여쓰기(indentation), 포맷팅 및 가독성이 좋게 다듬어 주는 역할을 수행하는 유틸리티이다.

C/C++/C#/Java 를 지원하며 K&R, Ansi, GNU, linux kernel style 등의 coding style을 지원한다.

설치

Windows

http://sourceforge.net/projects/astyle/files/ 에서 미리 컴파일된 바이너리를 받으면 된다.

Linux

CMake 3 이상 필요


  1. sourceforge 에서 subversion 으로 소스를 다운받는다.

    svn checkout https://svn.code.sf.net/p/astyle/code/trunk astyle-code
    cd  astyle-code/AStyle
  2. Cmake 로 컴파일 환경 구성

    cmake -G "Unix Makefiles"
  3. 컴파일

    make
  4. root 로 설치

    make install


사용

기본 사용

astyle source.c 를 하면 source.c 가 예쁘게 포맷팅이 되고 원본 소스는 source.c.orig 로 남는다.

예로 다음과 같은 hello.c 가 있을 경우

hello.c
   #include <stdio.h>
      int main(int argc, char** argv)
{
 if(argc > 0)
{
printf("Hello\n"); }
 else {
printf("world\n");
 }
        return 0;
  }

astyle hello.c 를 수행하면 다음과 같이 포맷팅된다.

hello.c
#include <stdio.h>
int main(int argc, char** argv)
{
    if(argc > 0)
    {
        printf("Hello\n");
    }
    else {
        printf("world\n");
    }
    return 0;
}


bracket style 지정

--style 옵션으로 bracket style 을 지정할 수 있다. 예로 위의 hello.c 소스에 대해 java style 을 지정하면 다음과 같이 formatting 된다.

astyle --style=java hello.c

#include <stdio.h>
int main(int argc, char** argv) {
    if(argc > 0) {
        printf("Hello\n");
    } else {
        printf("world\n");
    }
    return 0;
}

기타 tab size 나 다른 formatting option 은 Documentation 을 참고한다.(http://astyle.sourceforge.net/astyle.html#_Usage)

원본과 변환본 이름 교체

hello.c 파일에 대해 astyle 를 실행하면 원본은 hello.c.orig 가 되고 변환본은 hello.c 가 된다. 이를 변경할 수 있는 옵션은 없어 보이며 간단하게 다음 wrapper 스크립트를 통해 해결할 수 있다.

my-astyle.sh
#!/bin/sh -x
 
## 원본 파일명을 F 변수에 할당
F=$1
shift ;
## astyle 실행
astyle ${F} $*
 
## 임시 파일명 생성
T=`mktemp`

## 원본 임시 저장
cp ${F}.orig ${T}
## 변환을 원본에 덮어 씀
mv ${F} ${F}.orig
## 원본 복구
mv ${T} ${F}

첫 번째 파라미터를 변환할 파일로 처리하므로 실행시 다음과 같이 첫번째에는 반드시 파일명을 주어야 한다.

my-astyle.sh hello.c --style=gnu


See Also


Ref

Write a comment…