CodeChecker 는 LLVM/Clang 정적 분석기 도구 체인을 기반으로 한 정적 분석 인프라로 Linux 또는 MacOS (OS X) 개발 환경에서 scan-build 대체합니다.

오픈 소스 프로젝트의 분석 결과를 보여주는 데모를 확인하십시오!
교차 전환 장치 분석, 통계 분석 (체커를 사용할 수있는 경우), CPPCHECK , GCC 정적 분석기 및 Facebook Lent Analyzer를 사용하여 Clang-Tidy , Clang 정적 분석기를 실행합니다.
빌드 프로세스 (예 : CodeChecker log -b "make" )를 도청하여 JSON 컴파일 데이터베이스를 만듭니다.
GCC 교차 컴파일 된 프로젝트를 자동으로 분석합니다 : GCC 또는 Clang 컴파일러 구성 감지 및 해당 Clang 분석기 호출을 형성합니다.
증분 분석 : 변경된 파일과 그 종속성 만 재분석해야합니다.
검토 의견을 추가 할 가능성이있는 잘못된 긍정적 억제.
명령 줄 또는 정적 HTML의 결과 시각화.
Clang Static Analyzer (C/C ++), Clang Tidy (C/C ++), Facebook Infer (C/C ++, Java), Clang Sanitizers (C/C ++), Spotbugs (Java), Pylint (Python), Eslint (JavaScripp) ...
전체 목록은 지원되는 분석기를 참조하십시오
간소화 된 쉬운 경험 (PostgreSQL 또는 SQLite 백엔드 포함)을 갖춘 발견 된 코드 결함을보기위한 웹 응용 프로그램 .
Gerrit 및 Gitlab 통합은 Gitlab 또는 Gerrit 리뷰와 같은 분석 결과를 보여줍니다.
필터링 가능 (결함 검사기 이름, 심각도, 소스 경로, ...)과 비교할 수있는 (프로젝트의 두 분석 간의 차이를 계산하여 어떤 버그가 고정되었는지, 새로 소개 된 어떤 버그가 새로 소개되는지를 보여줍니다) 결과보기.
Diff Mode : 마지막 분석기 실행 이후 도입 된 버그 목록이 표시됩니다.
결과를 동료 개발자와 공유 할 수 있으며, 의견 및 검토 시스템은 코드 결함의 통신에 도움이됩니다.
발견 된 결함의 저장 및 쿼리에 사용되는 쉽게 구현 가능한 중고 기반 서버 클라이언트 통신.
웹 응용 프로그램, 명령 줄 도구 및 Eclipse 플러그인과 같은 여러 버그 시각화 프론트 엔드를 지원합니다.
CodeChecker 명령에는 예를 들어 프로젝트를 기록하고 분석하거나 결과를 인쇄하거나 웹 서버를 시작하는 데 사용할 수있는 많은 부하 명령이 있습니다. 전체 목록은 다음 표를 참조 하거나이 명령의 도움말 메시지를 확인하십시오 ( CodeChecker --help ).
CodeChecker 부계 명령 | 설명 |
|---|---|
analyze | JSON 컴파일 데이터베이스에 기록 된 파일의 지원되는 코드 분석기를 실행하십시오. |
analyzer-version | 사용중인 CodeChecker Analyzer 패키지의 버전을 인쇄하십시오. |
analyzers | 지원 및 사용 가능한 분석기 목록. |
check | 프로젝트에 대한 분석을 수행하고 결과를 표준 출력으로 인쇄하십시오. |
checkers | 코드 분석에 사용 가능한 체커를 나열하십시오. |
cmd | 명령 줄에서 실행중인 서버에서 분석 결과를 봅니다. |
fixit | 분석기의 제안에 따라 자동 수정 사항을 적용하십시오. |
log | 빌드 명령을 실행하고 실행 된 컴파일 명령을 수집하여 JSON 파일에 저장하십시오. |
parse | 인쇄 분석 요약 및 사람이 읽을 수있는 형식을 초래합니다. |
server | CodeChecker 웹 서버를 시작하고 관리합니다. |
store | 분석 결과를 데이터베이스에 저장합니다. |
version | 사용중인 CodeChecker 패키지의 버전을 인쇄하십시오. |
web-version | 사용중인 CodeChecker 서버 패키지의 버전을 인쇄하십시오. |
CodeChecker cmd 서브 커드 맨에는 실행중인 CodeChecker 서버에서 데이터 (제품, 실행, 결과, 통계)를 얻는 데 사용할 수있는 다른 많은 부 서브 명령이 있습니다. 전체 목록은 다음 표를 참조 하거나이 하위 명령 ( CodeChecker cmd --help )의 도움말 메시지를 확인하십시오.
CodeChecker cmd 부계 명령 | 설명 |
|---|---|
runs | 사용 가능한 분석 실행을 나열합니다. |
history | 여러 달리기의 실행 기록을 보여줍니다. |
results | 주어진 실행에 대한 목록 분석 결과 (찾기) 요약. |
diff | 두 가지 분석 실행을 비교하고 차이를 보여줍니다. |
sum | 체커 통계를 보여줍니다. |
token | CodeChecker 서버에서 관리하는 개인 액세스 토큰 구성과 관련된 부하 명령에 액세스하십시오. |
del | 분석 실행 삭제. |
update | 분석 실행을 업데이트하십시오. |
suppress | CodeChecker 서버에서 보고서 억제를 관리하고 가져옵니다. |
products | CodeChecker 서버에서 관리하는 제품 구성과 관련된 부하 명령에 액세스하십시오. |
components | CodeChecker 서버에서 관리하는 소스 구성 요소 구성과 관련된 부하 명령에 액세스하십시오. |
login | 권한이 필요한 CodeChecker 서버로 인증하십시오. |
export | CodeChecker의 의견 및 검토 상태를 내보내십시오. |
import | 의견을 가져오고 상태를 CodeChecker로 검토합니다. |

1 단계 : CodeChecker log 주어진 빌드 명령을 실행하고 실행 된 컴파일 단계를 기록합니다. 이 단계는 JSON 형식의 출력 파일 (컴파일 데이터베이스)에 기록됩니다.
2 단계 : CodeChecker analyze 이전에 생성 된 JSON 컴파일 데이터베이스를 사용하여 프로젝트에 대한 분석을 수행하고, 분석 결과가 기계 읽을 수있는 (PLIST) 형식으로 결과를 출력합니다.
3 단계 :이 단계에서는 여러 가지 작업을 수행 할 수 있습니다.
분석 결과 파일 ( CodeChecker parse )의 요약 및 결과를 구문 분석하고 인쇄합니다.
결과를 실행중인 CodeChecker 서버 ( CodeChecker store )에 저장하십시오.
두 가지 분석 결과/실행을 비교하여 두 가지 ( CodeChecker cmd diff ) 사이에 다른 결과를 보여줍니다.
등.
자세한 내용은 CodeChecker를 사용하는 방법에 대해서는 사용자 안내서를 참조하십시오.
시작하기 (예제 사용 방법)
분석기 사용자 안내서
거짓 긍정을 피하거나 억제합니다
체커 및 정적 분석기 구성
GCC 비 호환성
잘못된 긍정을 억제합니다
웹 서버 사용자 안내서
웹 GUI 사용자 안내서
명령 줄 및 웹 UI 기능 개요
보안 구성
인증 구성
승인 구성
전개
Docker를 사용하여 서버를 배포합니다
서버 구성
서버 로깅 구성
하나의 서버에서 여러 CodeChecker 리포지토리를 설정합니다
연속 통합 (CI)
github 액션으로 CodeChecker
Gerrit 및 Jenkins와 함께 CI 게이팅 설정
데이터베이스 구성
PostgreSQL 데이터베이스 백엔드 설정 안내서
CodeChecker 서버 및 데이터베이스 스키마 업그레이드 안내서
CodeChecker는 분석기 결과를 시각화하기위한 일반적인 도구로 사용할 수 있습니다.
다음 도구가 지원됩니다.
| 언어 | 분석기 |
|---|---|
| C/C ++ | Clang 정적 분석기 |
| Clang Tidy | |
| Clang Sanitizers | |
| CPPCHECK | |
| 페이스 북 추론 | |
| Coccinelle | |
| 스태치 | |
| 커널 DOC | |
| 부족한 | |
| cpplint | |
| 기음# | Roslynator.dotnet.cli |
| 자바 | 스팟 버그 |
| 페이스 북 추론 | |
| 파이썬 | 파일린트 |
| Pyflakes | |
| 자바 스크립트 | eslint |
| TypeScript | tslint |
| 가다 | 골린트 |
| 가격 인하 | Markdownlint |
| 스핑크스 |
자세한 내용은 지원되는 코드 분석기 문서 및 보고서 변환기 도구를 참조하십시오.
CodeChecker 외부에서도 사용할 수있는 유용한 도구.
빌드 로거 (빌드에서 JSON 컴파일 데이터베이스 생성)
plist/sarif to HTML 변환기 (주어진 plist 또는 sarif 파일에서 HTML 파일 생성)
보고서 컨버터 도구 (다른 분석기의 분석 결과를 CodeChecker Report 디렉토리 형식으로 변환하기 위해))
번역 장치 수집기 (변환 장치의 소스 파일을 수집하거나 주어진 헤더 파일에 의존하는 소스 파일을 얻기 위해)
해시 생성기 보고서 (보고서 용 고유 해시 식별자 생성)
매일 분석을위한 도우미 스크립트
pip 통해 CodeChecker를 설치하십시오CodeChecker는 PYPI에서 사용할 수 있으며 다음 명령으로 설치할 수 있습니다.
PIP3 CodeChecker를 설치하십시오
참고 : 이 패키지는 pip3 명령을 사용할 수있는 Linux , OSX 및 Windows 시스템에 설치할 수 있습니다. OSX 에서는 로깅 ( CodeChecker log )을 위해 intercept-build 설치해야합니다. Windows 에서는 로깅을 사용할 수 없습니다.
snap 패키지 관리자를 통해 CodeChecker 설치CodeChecker는 Snap Store에서 사용할 수 있으며 다음 명령으로 설치할 수 있습니다.
Sudo Snap CodeChecker 설치 -Classic
참고 : 불행히도 SNAP 패키지는 소문자 명령 이름 만 지원합니다. 이러한 이유로 CodeChecker 대신 codechecker 명령을 어디서나 사용해야합니다. CodeChecker Snap 패키지에서 사용 가능한 명령의 전체 목록은 snap info codechecker 실행하십시오.
자세한 의존성 목록과 새로운 Clang 및 Clang-Tidy 버전을 설치하는 방법에 대한 지침은 요구 사항을 참조하십시오. 다음 명령은 Ubuntu 20.04 LTS에서 CodeChecker를 부트 스트랩하는 데 사용됩니다.
# 개발 및 분석 환경을위한 필수 의존성을 설치합니다.# 참고 : Clang 또는 Clang-Tidy는 충분히 신선한 버전 일 수 있으며,# 패키지 관리자에서 나올 필요는 없습니다!# CPPCHECK의 경우 최소 지원 버전은 1.80입니다.# GCC의 경우 최소 지원 버전은 13.0.0. Clang Clang-Tidy CPPCHECK G ++ 빌드 필수 컬
gcc-multilib git python3-dev python3-venv python3-setupools# venv_dev target 및 ubuntu 23 linux의 경우 추가 라이브러리 설치 : sudo apt-get 설치 libpq-dev# nodejs 웹에 종속성을 설치하십시오. Debian/Ubuntu의 경우 다음 명령을 사용할 수 있습니다. 자세한 내용은 공식 문서를 참조하십시오. sudo -e bash-
sudo apt -get install -y nodejs# codechecker source code.git 클론 https://github.com/ericsson/codechecker.git -depth 1 ~/codecheckercd ~/codechecker# python virtualenv를 만들어 환경으로 설정하십시오.# note : valechecker를 사용하려면# `venv`.make venvsource $PWD/venv/bin/activate# [Optional] If you want to use external authentication methods (LDAP / PAM)# follow the instructions in# docs/web/authentication.md#external-authentication-methods# Build and install a CodeChecker package.make package# For ease of access, add the build directory to PATH.export 경로 = "$ pwd/build/codechecker/bin : $ path"cd ..참고 :
기본적으로 make package 32bit 및 64bit 의 LDLOGGER 공유 객체를 구축합니다. 64 bit only 빌드하고 패키지하려면 패키지 빌드 전에 BUILD_LOGGER_64_BIT_ONLY 환경 변수를 YES 로 설정할 수 있습니다. BUILD_LOGGER_64_BIT_ONLY=YES make package .
기본적으로 make package 아직 구축되지 않았거나 UI 코드가 변경된 경우 UI 코드를 빌드합니다. UI 코드를 빌드하지 않으려면 패키지 빌드 전에 BUILD_UI_DIST 환경 변수를 NO 로 설정할 수 있습니다. BUILD_UI_DIST=NO make package .
CodeChecker를 실행하기 전에 환경을 수동으로 활성화하지 않도록 make package 않고 make standalone_package 사용하십시오.
시스템의 파이썬을 최신 버전 (예 : 3.8 에서 3.11 로 업그레이드 한 경우 Ubuntu를 20.04 LTS에서 22.04 LT로 업그레이드 할 때 경우)이 설치된 환경은 상자 밖에서 작동하지 않습니다. 이 문제를 해결하려면 다음 명령을 실행하여 checker_env 도 업그레이드하십시오.
CD ~/CodeChecker/Venv Python3 -m venv.
Mac OS X의 설치 지침은 Mac OS X 설치 안내서 문서를 참조하십시오.
Docker에서 CodeChecker 서버를 실행하려면 Docker 문서를 참조하십시오. Docker Hub에서 CodeChecker 웹 서버 컨테이너를 찾을 수 있습니다.
Visual Studio Marketplace 또는 Open VSX에서 CodeChecker VSCODE 확장을 설치하고 사용할 수 있습니다.
주요 기능 :
편집기에서 CodeChecker 분석을 실행하고 결과를 자동으로 확인하십시오.
저장 될 때 현재 파일을 다시 분석하십시오.
빌드 시스템의 일부로 CodeChecker를 실행하기위한 명령 및 빌드 작업.
발견 된 보고서를 찾아보고 코드에서 재생산 단계를 직접 표시하십시오.
재생 단계를 탐색하십시오.

자세한 내용은이 플러그인을 설치하고 사용하는 방법에 대해서는이 확장자의 저장소를 참조하십시오.

CodeChecker는 프로젝트에 대한 재사용 가능한 GitHub 액션을 통해 실행할 수 있습니다! 분석을 로컬로 실행하는 것처럼 빌드 명령 만 지정하면됩니다.
자세한 내용은 Github Actions Marketplace에서 Codechecker 정적 분석 조치를 확인하십시오.
이 단계는 항상 분석을 실행하려는 새로운 명령 프롬프트에서 가져와야합니다.
소스 ~/codechecker/venv/bin/activate# codechecker pack 경로>/빌드/빈 : $ 경로
check 명령으로 프로젝트를 분석하십시오.
CodeChecker check -b "cd ~/your-project && make clean && make" -o ./results
check 분석기가 프로젝트에서 발견 한 문제에 대한 개요를 인쇄합니다. 보고서는 ./results 디렉토리에 plist XML 형식으로 저장됩니다.
실행하여 결과를 정적 HTML로 시각화 할 수 있습니다.
CodeChecker parse -e html ./results -o ./reports_html
인덱스 페이지는 ./reports_html/index.html 의 모든 Reper 목록과 함께 생성됩니다.
수백 가지의 결과가있는 경우 데이터베이스 백엔드로 웹 서버에 저장할 수 있습니다.
다른 터미널 또는 백그라운드 프로세스에서 CodeChecker 웹 및 스토리지 서버를 시작하십시오. 기본적으로 localhost:8001 에서 듣습니다.
보고서가 포함 된 SQLITE 데이터베이스는 -w 플래그를 통해 제공 할 수있는 작업 공간 디렉토리 (기본적으로 ~/.codechecker )에 배치됩니다.
CodeChecker server
웹 뷰어를 사용할 수 있도록 분석 보고서를 서버에 저장하십시오.
CodeChecker store ./results -n my-project
브라우저에서 CodeChecker 웹 뷰어를 열면 분석 결과를 보여주는 웹 응용 프로그램이 필요합니다.
건축학
패키지 레이아웃
의존성
중고품 인터페이스
패키지 및 통합 테스트
CodeChecker 인프라에 대한 개요는 PLDI 2020에서 제공되었습니다.
Márton, Gábor 및 Krupp, Dániel :
도구 대화 : CodeChecker
2015 년 유로 LLVM 컨퍼런스 프레젠테이션 중에 인프라에 대한 높은 수준의 개요가 제공됩니다.
Krupp, Dániel 및 Orbán, György 및 Horváth, Gábor 및 Babati, Bence :
Clang 정적 분석 도구 세트에 대한 산업 경험