릴리스 기간 | OSS-퍼즈 | Coverity 스캔 빌드 상태 | 당신이 사용하는 것을 포함 | 특허 |
---|---|---|---|---|
이 프로그램의 원래 이름은 "C++check"였지만 나중에 "Cppcheck"로 변경되었습니다.
이름에도 불구하고 Cppcheck는 C와 C++ 모두용으로 설계되었습니다.
매뉴얼은 온라인으로 제공됩니다.
Cppcheck는 자원이 제한된 취미 프로젝트입니다. CPU(코어 1개 또는 원하는 만큼)를 기부하여 우리를 도울 수 있습니다. 그것은 간단합니다:
cd cppcheck/
virtualenv .env
.env/bin/pip install -r tools/donate-cpu-requirements.txt
.env/bin/python tools/donate-cpu.py
스크립트는 데비안 소스 코드를 분석하고 결과를 cppcheck 서버에 업로드합니다. Cppcheck를 개선하고 회귀를 감지하려면 이러한 결과가 필요합니다.
Ctrl C를 사용하면 언제든지 스크립트를 중지할 수 있습니다.
Cppcheck에는 (부분) C++11을 지원하는 C++ 컴파일러가 필요합니다. 최소 필수 버전은 GCC 5.1 / Clang 3.5 / Visual Studio 2015입니다.
GUI 애플리케이션을 빌드하려면 CMake 빌드 시스템을 사용해야 합니다.
명령줄 도구를 빌드할 때 PCRE는 선택 사항입니다. 규칙을 사용하여 빌드하는 경우에 사용됩니다.
여러 가지 컴파일 선택이 있습니다:
최소 필수 Python 버전은 3.6입니다.
최소 필수 버전은 CMake 3.5입니다.
예, cmake를 사용하여 Cppcheck 컴파일:
mkdir build
cd build
cmake ..
cmake --build .
GUI를 컴파일하려면 플래그를 사용할 수 있습니다. -DBUILD_GUI=켜짐
규칙 지원(pcre 필요)을 위해서는 플래그를 사용하십시오. -DHAVE_RULES=ON
릴리스 빌드의 경우 -DUSE_MATCHCOMPILER=ON을 사용하는 것이 좋습니다.
테스트를 구축하려면 플래그를 사용하세요. -DBUILD_TESTS=ON
cmake를 사용하면 Visual Studio, XCode 등의 프로젝트 파일을 생성할 수 있습니다.
단일 구성 생성기(예: "Unix Makefiles")의 경우 다음을 사용하여 특정 구성(예: "RelWithDebInfo")을 생성하고 빌드할 수 있습니다.
mkdir build_RelWithDebInfo
cd build_RelWithDebInfo
cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
cmake --build . --config RelWithDebInfo
다중 구성 생성기(예: "Visual Studio 17 2022")의 경우 다음을 사용하여 동일한 작업을 수행합니다.
mkdir build
cd build
cmake ..
cmake --build . --config RelWithDebInfo
cppcheck.sln 파일을 사용하십시오. 파일은 Visual Studio 2019용으로 구성되어 있지만 플랫폼 도구 집합은 이전 버전이나 최신 버전으로 쉽게 변경할 수 있습니다. 이 솔루션에는 x86 및 x64 모두에 대한 플랫폼 대상이 포함되어 있습니다.
규칙을 사용하여 컴파일하려면 "Release-PCRE" 또는 "Debug-PCRE" 구성을 선택하세요. pcre.lib(x64 빌드의 경우 pcre64.lib) 및 pcre.h는 /externals에 있을 것으로 예상됩니다. Visual Studio용 PCRE의 최신 버전은 vcpkg를 사용하여 얻을 수 있습니다.
Visual Studio IDE를 사용하지 않으려면 명령줄에서 다음 명령을 사용하여 cppcheck를 컴파일할 수 있습니다.
msbuild cppcheck.sln
g++ 및 gdb가 포함된 GNU 도구 체인을 얻으려면 MSYS2를 설치하십시오(https://www.msys2.org/). 다음 내용으로 .vscode 폴더에 settings.json 파일을 만듭니다(필요에 따라 경로 조정).
{
"terminal.integrated.shell.windows": "C:\msys64\usr\bin\bash.exe",
"terminal.integrated.shellArgs.windows": [
"--login",
],
"terminal.integrated.env.windows": {
"CHERE_INVOKING": "1",
"MSYSTEM": "MINGW64",
}
}
cppcheck를 빌드하려면 터미널에서 "make"를 실행하세요.
디버깅을 위해 cppcheck 및 misra.py 디버깅을 위한 구성을 다루는 다음 내용으로 .vscode 폴더에 launch.json 파일을 만듭니다.
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "cppcheck",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/cppcheck.exe",
"args": [
"--dump",
"${workspaceFolder}/addons/test/misra/misra-test.c"
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:/msys64/mingw64/bin/gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "misra.py",
"type": "python",
"request": "launch",
"program": "${workspaceFolder}/addons/misra.py",
"console": "integratedTerminal",
"args": [
"${workspaceFolder}/addons/test/misra/misra-test.c.dump"
]
}
]
}
CLI를 빌드하려면 PCRE dll이 필요합니다. 여기에서 다운로드할 수 있습니다: http://software-download.name/pcre-library-windows/
단순하고 최적화되지 않은 빌드(종속성 없음):
make
권장되는 릴리스 빌드는 다음과 같습니다.
make MATCHCOMPILER=yes FILESDIR=/usr/share/cppcheck HAVE_RULES=yes CXXFLAGS= " -O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function "
플래그:
MATCHCOMPILER=yes
Python은 cppcheck를 최적화하는 데 사용됩니다. Token::Match 패턴은 컴파일 타임에 C++ 코드로 변환됩니다.
FILESDIR=/usr/share/cppcheck
cppcheck 파일이 설치된 폴더 지정(애드온, cfg, 플랫폼)
HAVE_RULES=yes
규칙 활성화(사용하는 경우 PCRE가 필요함)
CXXFLAGS="-O2 -DNDEBUG -Wall -Wno-sign-compare -Wno-unused-function"
대부분의 컴파일러 최적화를 활성화하고 cppcheck-internal 디버깅 코드를 비활성화하며 기본 컴파일러 경고를 활성화합니다.
종속성 없이 Cppcheck를 빌드하려면 다음 명령을 사용할 수 있습니다.
g++ -o cppcheck -std=c++11 -Iexternals -Iexternals/simplecpp -Iexternals/tinyxml2 -Iexternals/picojson -Ilib cli/ * .cpp lib/ * .cpp externals/simplecpp/simplecpp.cpp externals/tinyxml2/ * .cpp
--rule
및 --rule-file
사용하려면 종속성이 필요합니다.
g++ -o cppcheck -std=c++11 -lpcre -DHAVE_RULES -Ilib -Iexternals -Iexternals/simplecpp -Iexternals/tinyxml2 cli/ * .cpp lib/ * .cpp externals/simplecpp/simplecpp.cpp externals/tinyxml2/ * .cpp
mingw32-make
MATCHCOMPILER=yes
에서 다음 오류가 발생하는 경우 PYTHON_INTERPRETER
를 통해 Python 인터프리터를 지정해야 합니다.
process_begin: CreateProcess(NULL, which python3, ...) failed.
makefile:24: pipe: No error
process_begin: CreateProcess(NULL, which python, ...) failed.
makefile:27: pipe: No error
makefile:30: *** Did not find a Python interpreter. Stop.
sudo apt-get install mingw32
make CXX=i586-mingw32msvc-g++ LDFLAGS= " -lshlwapi " RDYNAMIC= " "
mv cppcheck cppcheck.exe
선택한 플랫폼에서 직접 빌드하는 것 외에도 사전 빌드된 패키지를 얻는 방법도 여러 가지가 있습니다.
참고: Windows 이외의 패키지는 Cppcheck 팀이 아닌 해당 패키지 작성자가 유지 관리합니다.
yum
, apt
, pacman
등)를 통해 Cppcheck 패키지를 제공합니다. 개요는 https://pkgs.org/search/?q=cppcheck를 참조하세요.brew
)를 통해 패키지를 사용할 수 있습니다. https://formulae.brew.sh/formula/cppcheck#default를 참조하세요. https://cppcheck.sourceforge.io/