'clang'에 대해 들어보셨나요? 

아이폰 어플 개발 하신 분들이라면 한 번 쯤은 들어보셨을 텐데요. 

clang은 Apple의 Xcode에 포함되어 배포되고 있는 정적 소스 분석기(Static analyzer)입니다. 

물론, 무료(오픈소스)로 배포중입니다. 


물론, 윈도우(Window)나 우분투(Ubuntu)혹은 페도라(Fedora) 같은 다른 OS에서도 사용이 가능합니다. 


설치는 각 OS에서 제공하는 패키지(rpm, deb, 등)을 설치하는 방법과 사이트에서 소스를 다운 받아 직접 빌드해서 사용 하는 방법이 있습니다만.. 빌드하는데 매우 오랜 시간이 걸리므로 소스를 수정해서 사용하실게 아니라면 패키지 파일을 설치하는걸 추천합니다. 


자세한 정보는 clang 사이트 에서 확인이 가능합니다. 



추천은 저를 춤추게 합니다 ^^



clang의 가장 큰 장점은 다른 컴파일러와 비교해서 오류에 대한 정보가 매우 친절하다는 점입니다. 



warning이나 error의 위치를 정확하게 밑줄까지 쫙~ 그어주는 친절함!! 대박


특정 파일에 대해 문법 검사를 하고자 할 때 사용법은 매우 간단합니다. 


$ clang --analyze test.c


그런데, 정적 소스 분석을 할 때 소스 파일을 낱개로 검사하지 않고 Makefile을 작성해서 'make'명령으로 한방에 검사하고 싶을겁니다. 

이럴때 쓰는게 'scan-build' 입니다. 

clang 패키지에 포함되어 있으므로 따로 설치 해야 하는건 아닙니다. 


실행 방법은 간단합니다. 


$ scan-build make


default로 꺼져있는 추가적인 체커를 수행하고 싶다면 이렇게 하면 됩니다. 


$ scan-build --use-analyzer <clang path> -enable-checker <추가한 체커 이름> -v -v -v -k make


빌드가 성공하고 나면 마지막에 아래처럼 발견된 버그에 대한 결과가 나옵니다. 



'scan-view' 로 버그 리포트를 보라고 친절하게 알려주는 군요. 

'scan-view'는 clang이 찾아낸 오류들을 웹 화면으로 보기 좋게 보여주는 툴입니다. 

이 또한 clang 패키지에 포함되어 있답니다. 


명령을 실행해 봅시다. 


$ scan-view <scan-build 결과 파일>


웹 서버가 정상적으로 설치 되어 있다면 아래와 같은 웹 페이지가 뜨게 됩니다. 


다양한 타입의 버그에 대한 리포트가 보여지는 군요. 



세부 내용을 보고 싶다면 'View Report' 링크를 클릭합니다. 


해당 소스와 친절한 메시지가 함께 보여집니다. 

결과적으로 메모리 누수가 있을 수 있는지 다시 한번 확인해 보면 되겠죠? 


Posted by KT한
,