Cppcheck
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
Cppcheck는 C 및 C++ 코드를 위한 정적 분석 도구이다. 컴파일러가 감지하지 못할 수 있는 다양한 오류를 찾아내며, 휴리스틱이 아닌 엄격한 정적 분석을 수행한다. 자동 변수, 배열 오버런, 클래스 관련 문제, 메모리 누수, 자원 누수, 표준 템플릿 라이브러리 사용 오류 등 다양한 유형의 결함을 검사한다. CERN의 4DSOFT, OpenOffice.org, Debian 아카이브 등 여러 프로젝트에서 사용되며, 개발이 활발히 진행 중이다. 다양한 통합 개발 환경(IDE) 및 텍스트 편집기를 위한 플러그인을 지원한다.
더 읽어볼만한 페이지
- 자유 소프트웨어 테스트 도구 - 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를 지원한다.
| Cppcheck - [IT 관련 정보]에 관한 문서 | |
|---|---|
| 기본 정보 | |
![]() | |
| 저자 | Daniel Marjamäki |
| 출시일 | 2007년 5월 8일 |
| 프로그래밍 언어 | C++ |
| 운영 체제 | 크로스 플랫폼 |
| 지원 언어 | 영어 네덜란드어 핀란드어 스웨덴어 독일어 러시아어 일본어 세르비아어 스페인어 프랑스어 이탈리아어 한국어 중국어 |
| 장르 | 정적 프로그램 분석 |
| 라이선스 | GNU 일반 공중 사용 허가서 |
| 웹사이트 | Cppcheck 공식 웹사이트 |
2. 기능
Cppcheck는 컴파일러가 자체적으로 처리하지 못할 수 있는 다양한 정적 검사 기능을 제공한다. 이러한 검사는 소스 코드 수준에서 수행되는 정적 분석 검사이다. Cppcheck는 휴리스틱이 아닌 엄격한 정적 분석 검사를 지향한다.[30]
Cppcheck는 CERN의 4DSOFT 메타 분석 패키지[4], 고에너지 입자 검출기 판독 장치에서 코드 검증[5], 전파 망원경용 시스템 모니터링 소프트웨어[6]뿐만 아니라 OpenOffice.org[7] 및 Debian 아카이브[8]와 같은 대규모 프로젝트의 오류 분석에도 사용되는 것으로 확인되었다. 한편, 2009년 3월에 수행된 연구에 따르면 Cppcheck에서 잘못된 긍정이 발견된 여러 영역이 확인되었지만, 검사된 프로그램 버전은 명시되지 않았다.[3]
2. 1. 지원되는 검사
Cppcheck는 컴파일러 자체에서 다루지 않을 수 있는 다양한 정적 검사를 지원한다. 해당 검사들은 정적 분석 검사들이며 소스 코드 레벨에서 수행이 가능하다. 이 프로그램은 휴리스틱 이론이 아닌 엄격한 정적 분석 검사를 지향한다.지원되는 검사들 중 일부는 다음을 포함한다:
- 자동 변수 검사
- 배열 오버런(overrun) 경계 검사
- 클래스 검사 (예: 미사용 함수, 변수 초기화, 메모리 중복)
- 오픈 그룹에 의거한 구식(deprecated) 처리 또는 대체된 함수의 사용[30]
- 예외 안전 검사(예: 메모리 할당 사용 및 소멸자 검사)
- 메모리 누수 (예: 할당 해제 없이 스코프 소실)
- 자원 누수 (예: 파일 핸들을 닫는 것을 잊음)
- 유효하지 않은 표준 템플릿 라이브러리 함수 및 관용구 사용
- 기타 스타일 및 성능 오류
3. 개발
이 프로젝트는 활발하게 개발[9] 중이며, 여러 배포판에서 적극적으로 유지 관리되고 있다.[10][11] 리눅스 커널과 MPlayer와 같은 여러 인기 프로젝트에서 유효한 버그를 찾아냈다.[12][13]
4. 플러그인
다음은 Cppcheck와 연동되는 IDE 및 텍스트 편집기 플러그인 목록이다.[31][14]
| IDE/텍스트 편집기 | 설명 |
|---|---|
| CLion[15] | |
| Code::Blocks | 통합 |
| 코드라이트 | 통합 |
| 이클립스[33][16] | |
| 이맥스[34][17] | |
| Gedit[35][18] | |
| 허드슨[36][19] | |
| Jenkins[37][20] | |
| 케이트[38][21] | |
| KDevelop[39][22] | |
| Qt 크리에이터[40][23] | |
| 서브라임 텍스트[41][24] | |
| Visual Studio[42][43][44][25][26][27] | |
| Yasca[45][28] | |
| 젯브레인즈[32] |
참조
[1]
웹사이트
A Survey of C and C++ Software Tools for Computational Science
http://www.softeng.r[...]
Chilbolton, Daresbury, and Rutherford Appleton Laboratories
2010-09-14
[2]
웹사이트
System Interfaces
https://pubs.opengro[...]
2020-09-24
[3]
웹사이트
Static Code Analysis For Embedded Systems
http://publications.[...]
[4]
웹사이트
Dissemination and use of knowledge plan (EU Deliverable DNA2.11
http://etics.web.cer[...]
2010-09-15
[5]
웹사이트
Entwurf und Implementierung eines adaptiven, strahlentoleranten eingebetteten Systems am Beispiel eines Read-Out-Controllers (En: Development and implementation of an adaptive, radiation tolerant embedded system for operation of a Read-Out controller)
http://www.kip.uni-h[...]
[6]
웹사이트
The Wettzell System Monitoring Concept and First Realizations
http://ivscc.gsfc.na[...]
International VLBI Service for Geodesy & Astrometry
[7]
웹사이트
Hunting for vulnerabilities in large software : the OpenOffice suite
http://www.cl.cam.ac[...]
2010-09-15
[8]
웹사이트
Introducing the "Debian's Automated Code Analysis" (DACA) project
https://lwn.net/Arti[...]
LWN.net
[9]
Github
Cppcheck on Github
https://github.com/d[...]
[10]
Debian
Cppcheck on Debian's Package Tracking System
http://packages.qa.d[...]
[11]
FreeBSD
FreeBSD port
http://svnweb.freebs[...]
[12]
웹사이트
List of user reported bugs found by cppcheck
http://sourceforge.n[...]
[13]
웹사이트
Found Bugs list
http://sourceforge.n[...]
[14]
웹사이트
SourceForge.net: cppcheck
http://sourceforge.n[...]
[15]
웹사이트
cppcheck plugin for CLion
https://plugins.jetb[...]
[16]
웹사이트
Cppcheclipse
https://github.com/k[...]
[17]
웹사이트
Flycheck
https://flycheck.rea[...]
[18]
웹사이트
gedit Cppcheck plugin
https://github.com/o[...]
[19]
웹사이트
Cppcheck Plugin
http://wiki.hudson-c[...]
2010-09-15
[20]
웹사이트
Cppcheck Plugin
http://wiki.jenkins-[...]
2022-05-20
[21]
웹사이트
Kate Project Plugin News – Code Analysis
https://kate-editor.[...]
2013-02-02
[22]
웹사이트
KDevelop's Cppcheck plugin merged into kdevelop.git, will be released with 5.1
https://mail.kde.org[...]
2016-12-06
[23]
웹사이트
Qt Creator Plug-in Gallery
https://wiki.qt.io/Q[...]
[24]
웹사이트
Sublimelinter plugin
https://github.com/S[...]
[25]
웹사이트
Cppcheck add-in
https://marketplace.[...]
[26]
웹사이트
Homepage cppcheck-vs-addin
https://github.com/V[...]
2014-03-03
[27]
웹사이트
Simple open source static analysis tool for Visual Studio
http://www.technosri[...]
2012-08-27
[28]
웹사이트
Yasca
https://scovetta.git[...]
[29]
웹인용
A Survey of C and C++ Software Tools for Computational Science
http://www.softeng.r[...]
Chilbolton, Daresbury, and Rutherford Appleton Laboratories
2010-09-14
[30]
문서
http://www.opengroup[...]
[31]
웹인용
SourceForge.net: cppcheck
http://sourceforge.n[...]
[32]
웹인용
cppcheck plugin for CLion
https://plugins.jetb[...]
[33]
웹인용
Cppcheclipse
https://github.com/k[...]
[34]
웹인용
Flycheck
https://flycheck.rea[...]
[35]
웹인용
gedit Cppcheck plugin
https://github.com/o[...]
[36]
웹인용
Cppcheck Plugin
https://web.archive.[...]
2010-09-15
[37]
웹인용
Cppcheck Plugin
http://wiki.jenkins-[...]
[38]
웹인용
Kate Project Plugin News – Code Analysis
https://kate-editor.[...]
2016-12-14
[39]
웹인용
KDevelop's Cppcheck plugin merged into kdevelop.git, will be released with 5.1
https://mail.kde.org[...]
2016-12-14
[40]
웹인용
Qt Creator Plug-in Gallery
https://wiki.qt.io/Q[...]
[41]
웹인용
Sublimelinter plugin
https://github.com/S[...]
[42]
웹인용
Cppcheck add-in
https://marketplace.[...]
[43]
웹인용
Homepage cppcheck-vs-addin
https://github.com/V[...]
2014-03-03
[44]
웹인용
Simple open source static analysis tool for Visual Studio
http://www.technosri[...]
2012-08-27
[45]
웹인용
Yasca
https://scovetta.git[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com
