Artistic Style 은 cmd 기반 프로그램으로 source 파일에 대해 들여쓰기(indentation), 포맷팅 및 가독성이 좋게 다듬어 주는 역할을 수행하는 유틸리티이다.
C/C++/C#/Java 를 지원하며 K&R, Ansi, GNU, linux kernel style 등의 coding style을 지원한다.
http://sourceforge.net/projects/astyle/files/ 에서 미리 컴파일된 바이너리를 받으면 된다.
sourceforge 에서 subversion 으로 소스를 다운받는다.
svn checkout https://svn.code.sf.net/p/astyle/code/trunk astyle-code
cd astyle-code/AStyle
CODE
Cmake 로 컴파일 환경 구성
cmake -G "Unix Makefiles"
CODE
컴파일
root 로 설치
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;
}
CPP
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;
}
CPP
--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;
}
CODE
기타 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}
BASH
첫 번째 파라미터를 변환할 파일로 처리하므로 실행시 다음과 같이 첫번째에는 반드시 파일명을 주어야 한다.
my-astyle.sh hello.c --style=gnu
CODE