Cppcheck

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

Cppcheck는 C 및 C++ 코드를 위한 정적 분석 도구이다. 컴파일러가 감지하지 못할 수 있는 다양한 오류를 찾아내며, 휴리스틱이 아닌 엄격한 정적 분석을 수행한다. 자동 변수, 배열 오버런, 클래스 관련 문제, 메모리 누수, 자원 누수, 표준 템플릿 라이브러리 사용 오류 등 다양한 유형의 결함을 검사한다. CERN의 4DSOFT, OpenOffice.org, Debian 아카이브 등 여러 프로젝트에서 사용되며, 개발이 활발히 진행 중이다. 다양한 통합 개발 환경(IDE) 및 텍스트 편집기를 위한 플러그인을 지원한다.

Cppcheck - [IT 관련 정보]에 관한 문서
기본 정보

이미지 준비중입니다.

저자Daniel Marjamäki
출시일2007년 5월 8일
프로그래밍 언어C++
운영 체제크로스 플랫폼
지원 언어영어
네덜란드어
핀란드어
스웨덴어
독일어
러시아어
일본어
세르비아어
스페인어
프랑스어
이탈리아어
한국어
중국어
장르정적 프로그램 분석
라이선스GNU 일반 공중 사용 허가서
웹사이트Cppcheck 공식 웹사이트
📚 더 읽어볼만한 페이지
  • 자유 소프트웨어 테스트 도구 - Valgrind
    Valgrind는 동적 분석 도구들의 프레임워크로, 가상 머신 기반으로 작동하며 메모리 오류 감지, 멀티스레드 코드 분석 등 다양한 기능을 제공하지만, 정적 또는 스택 할당 데이터의 경계 오류는 모두 감지하지 못한다.
  • 자유 소프트웨어 테스트 도구 - OneFuzz
    OneFuzz는 마이크로소프트가 소프트웨어 테스트 효율성을 위해 개발한 퍼징 도구로, 앙상블 퍼징, 프로그래밍 방식 결과 분석, 알림 콜백 기능을 제공하며, 2020년 공개되었으나 2023년 개발이 종료되고 GitHub 프로젝트는 보관되었다.
  • 정적 프로그램 분석 도구 - 린트 (소프트웨어)
    린트는 소프트웨어 코드의 오류, 스타일 문제, 의심스러운 구조를 탐지하는 도구이며, 다양한 프로그래밍 언어에서 활용되어 저품질 코드 검출 및 버그 예방에 기여한다.
  • 정적 프로그램 분석 도구 - JSLint
    JSLint는 자바스크립트 코드의 잠재적 오류를 검사하는 도구이며, 2021년부터 FSF/OSI 승인 언라이선스를 사용한다.
  • GPL 라이선스 소프트웨어 - F-Droid
    F-Droid는 2010년 키어런 걸트니엑스가 설립한 안드로이드용 자유 소프트웨어 앱 저장소로, 구글 플레이 스토어에 없는 자유/오픈 소스 소프트웨어 앱을 제공하며 감시, 검열 저항, 개인 정보 보호에 중점을 둔 클라이언트 앱, 저장소 관리 도구, 웹사이트 생성기 등의 하위 프로젝트로 구성된다.
  • GPL 라이선스 소프트웨어 - MySQL
    MySQL은 1994년 스웨덴에서 개발을 시작하여 현재 오라클에 인수된 관계형 데이터베이스 관리 시스템으로, 오픈 소스 및 상업용 에디션을 제공하며 ANSI SQL 99 표준을 지원하고 다양한 스토리지 엔진과 프로그래밍 언어 API를 지원한다.

2. 기능

Cppcheck는 컴파일러가 자체적으로 처리하지 못할 수 있는 다양한 정적 검사 기능을 제공한다. 이러한 검사는 소스 코드 수준에서 수행되는 정적 분석 검사이다. Cppcheck는 휴리스틱이 아닌 엄격한 정적 분석 검사를 지향한다.

Cppcheck는 CERN의 4DSOFT 메타 분석 패키지, 고에너지 입자 검출기 판독 장치에서 코드 검증, 전파 망원경용 시스템 모니터링 소프트웨어뿐만 아니라 OpenOffice.org 및 Debian 아카이브와 같은 대규모 프로젝트의 오류 분석에도 사용되는 것으로 확인되었다. 한편, 2009년 3월에 수행된 연구에 따르면 Cppcheck에서 잘못된 긍정이 발견된 여러 영역이 확인되었지만, 검사된 프로그램 버전은 명시되지 않았다.

2.1. 지원되는 검사

Cppcheck는 컴파일러 자체에서 다루지 않을 수 있는 다양한 정적 검사를 지원한다. 해당 검사들은 정적 분석 검사들이며 소스 코드 레벨에서 수행이 가능하다. 이 프로그램은 휴리스틱 이론이 아닌 엄격한 정적 분석 검사를 지향한다.

지원되는 검사들 중 일부는 다음을 포함한다:

* 자동 변수 검사
* 배열 오버런(overrun) 경계 검사
* 클래스 검사 (예: 미사용 함수, 변수 초기화, 메모리 중복)
* 오픈 그룹에 의거한 구식(deprecated) 처리 또는 대체된 함수의 사용
* 예외 안전 검사(예: 메모리 할당 사용 및 소멸자 검사)
* 메모리 누수 (예: 할당 해제 없이 스코프 소실)
* 자원 누수 (예: 파일 핸들을 닫는 것을 잊음)
* 유효하지 않은 표준 템플릿 라이브러리 함수 및 관용구 사용
* 기타 스타일 및 성능 오류

3. 개발

이 프로젝트는 활발하게 개발 중이며, 여러 배포판에서 적극적으로 유지 관리되고 있다. 리눅스 커널과 MPlayer와 같은 여러 인기 프로젝트에서 유효한 버그를 찾아냈다.

4. 플러그인

다음은 Cppcheck와 연동되는 IDE 및 텍스트 편집기 플러그인 목록이다.

👆
좌우로 밀어서 보기
IDE/텍스트 편집기설명
CLion
Code::Blocks통합
코드라이트통합
이클립스
이맥스
Gedit
허드슨
Jenkins
케이트
KDevelop
Qt 크리에이터
서브라임 텍스트
Visual Studio
Yasca
젯브레인즈