본문 바로가기

C/C++

정적 분석 도구 - Cppcheck

정적 분석 도구 - Cppcheck

 

C/C++을 위한 정적 분석 도구 (A tool for static C/C++ code analysis)로 Cppcheck가 있습니다.

 

아래 사이트에 다운로드 및 자세한 설명이 나와 있습니다.

http://sourceforge.net/apps/mediawiki/cppcheck/index.php?title=Main_Page

 

 

정적 분석이 무슨 말인지는 잘 모르겠네요...

 

여하튼,

적 분석 방식에는 소스 코드를 분석하는 방식과 바이너리를 분석하는 방식이 있습니다.

Cppcheck는 소스 정적 분석 도구이고 무료 입니다. !!!

 

Cppcheck는 소스 코드 구문을 분석하여 오류를 검출하며 마이크로소프트 윈도우와 유닉스 계열의 운영체제에서 모두 사용가능 합니다.

 

Cppcheck로 발견할 수 있는 결함에는 다음과 같은 것이 있습니다.

 - 배열 인덱스 참조 위반

 - 생성자가 없는 클래스

 - 생성자가 초기화하지 않는 변수

 - 잘못된 메모리 초기화

 - 베이스 크래스의 소멸자는 가상 함수로 선언하지 않는 경우

 - 사용하지 않는 private 함수

 - 'operator='가 self의 레퍼런스를 반환하지 않는 경우

 - 'operator='가 자신과 동일한 타입의 객체를 할당하지 않는 경우

 - obsolete (폐기된) 함수(mktemp, gets, scanf)를 사용하는 경우

 - 메모리 누수

 - sprintf를 잘못 사용하는 경우

 - 숫자를 0으로 나누는 경우

 - null 포인터를 역참조 하는 경우

 - 초기화하지 않은 변수나 데이터를 사용하는 경우

 - 입력 스트림에 fflush()를 사용하는 경우

 - memset, memcpy 등이 클래스에서 사용될 때 경고 (검색창에 POD라고 검색해 보세요)

 - 기타 결함 유형은 공식 홈페이지(1)을 참조하세요. 꽤 많이 있습니다.

 

Visual Studio와 연동하는 방법은 아래 링크에 보면 있습니다.

참고로, Visual Studio Team Suite 이상 버전부터는 정적분석기가 내장되어 있다고 하네요.

 : http://devilchen.tistory.com/4036

 

 

출처 :

1. http://sourceforge.net/apps/mediawiki/cppcheck/index.php?title=Main_Page

2. [도서] NHN은 이렇게 한다! 소프트웨어 품질관리, 위키북스

3. http://devilchen.tistory.com/4036