Media Log

[static analysis tool]에 해당되는 글 1

  1. h 오픈소스 C++ 코드 정적 분석툴 cppcheck (6) 2010.07.28
나는 디바이스 드라이버를 개발할 때, 마이크로소프트의 Prefast for drivers 를 몹시 애용한다.
내가 미처 생각하지 못했던 실수들을 잘 발견해서 가르쳐주기 때문에, 나는 코딩할 때는 항상 경고레벨을 최고로 둠과 동시에 빌드시마다 Prefast 를 자동으로 실행시켜서 경고가 발생했는지 확인하고는 한다.

이렇게 함으로써 버그를 잡을 수 있을 뿐 아니라 코드를 조금 더 정교하고 튼튼하게 만들수 있고 여러 좋은 습관들까지 몸에 배이도록 할 수있다.
이것은 거의 공짜로 주워먹는 큰 이득이기 때문에, 쓸만한 정적 분석툴을 가지고 있다면 무조건 적용시키는 것이 좋다.

나는 Prefast를 유저모드에서도 사용할 수 없을까 찾아보다가 해결책을 찾지 못하고 cppcheck라는 다른 툴을 알아보게 되었다.

cppcheck는 멀티 플랫폼에서 사용할 수 있도록 만들어졌고 오픈소스이며, 분석 능력도 그럭저럭 만족스럽다.
어떤 것들을 분석해주는지는 웹사이트에 잘 나와있으며, 안 읽어보더라도 조금 쓰다보면 금방 알게된다.

GUI 버전으로 실행할 수도 있고, 콘솔 프로그램만으로도 결과를 얻을 수 있는데 나는 Visual Studio의 External Tools 기능을 이용해서 콘솔 프로그램만을 구동시킨다.


위 처럼 적어넣으면 내가 원할 때마다 한번씩 쉽게 분석 작업을 수행할 수 있다.
빌드 후 이벤트에 넣어서 매 빌드마다 실행되게 할 수도 있지만, 모든 프로젝트에 각각 적용시키려면 귀찮은 짓을 많이 해야한다.

External Tools 는 전역 기능이기 때문에 한번만 적어놓으면 가지고 있는 모든 VC 프로젝트에서 바로 사용이 가능하다.

나는 비주얼 스튜디오 아웃풋 윈도우로 출력을 돌리도록 설정하고 사용하는데, 이렇게 할 때는 --template vs 옵션을 주는 것이 좋다.
이 옵션을 넣으면 더블클릭을 통해 해당 소스 코드 위치로 바로 이동할 수 있도록 메세지를 다시 포맷팅 해서 출력해준다.

정말 쓸데없는 경고는 disable 시켜야 하는데, 편리하고 정교하게 disable 시킬수 있는 인터페이스가 아직 없다. 이런 것들은 앞으로 더 개선될 것으로 기대한다.

기존에 이런 종류의 컴파일러 경고들에 무심했었다면, 미친듯이 쏟아지는 경고메세지를 보고는 바로 이 짓을 때려칠지도 모르겠다.

"도대체 누가 경고레벨을 최대로 올리고 코딩을 해?"
"이런 경고 메세지들은 다 쓸데없는 것들이야. 코딩 잘하는데는 도움이 하나도 안돼"

이런 썩어빠진 마음가짐은 빨리 버려야 한다.
자신이 짠 코드에서 경고가 우르르 쏟아져나온다면 분명히 문제가 있는 것이다.

공짜로 얻을 수 있는 이득을 좋아한다면 한번씩 시도해보자.
신고
  1. 지나리 at 2010.08.06 23:34 신고 [edit/del]

    와우 끝내주는군요. 잘 보고갑니다 ㅎㅎ

    Reply
  2. Favicon of http://nyolong.egloos.com/ BlogIcon 뇨릉 at 2010.08.11 20:23 신고 [edit/del]

    저도 Warning 레벨 4에 경고를 에러로 처리하도록 해놓고 하곤 하는데요.
    에러 메시지에 당황하는 분들도 계시더군요.
    아직까지 정적코드분석툴은 안써봤었는데 이제 써봐야 겠습니다.

    Reply
    • Favicon of http://www.benjaminlog.com BlogIcon 김재호 at 2010.08.11 21:46 신고 [edit/del]

      네, 경고를 에러로 처리하고 계신다면 정적분석툴도 틀림없이 좋아하실꺼에요. Visual Studio Team Suite 이상 버전 부터는 정적분석기가 내장되어있습니다.

  3. 곽재상 at 2011.03.21 16:31 신고 [edit/del]

    자바 소스 분석툴 찾다 보니 구글에 낯익은 이곳까지 오게 되네요 ㅋㅋ 올때마다 홈페이지 UI가 계속바뀌네요?? 잘 보고 가요~~

    Reply
    • Favicon of http://www.benjaminlog.com BlogIcon 김재호 at 2011.03.21 21:37 신고 [edit/del]

      그래 재상아. 검색해서 오지 말고 종종 놀러와. 크크^^
      영신이 회사 얼마전에 서울대입구로 옮겼더라. 같이 또 저녁밥이나 먹자구.

submit