CodeChecker是建立在LLVM/Clang靜態分析儀工具鏈上的靜態分析基礎架構,可在Linux或MacOS(OS X)開發環境中取代scan-build 。

查看我們的演示,顯示開源項目的一些分析結果!
通過交叉翻譯單元分析,統計分析(可用檢查時), CPPCHECK , GCC靜態分析儀和Facebook推論分析儀執行Clang-Tidy , Clang靜態分析儀。
通過竊聽任何構建過程(例如CodeChecker log -b "make" )來創建JSON編譯數據庫。
自動分析GCC跨編譯項目:檢測GCC或CLANG編譯器配置並形成相應的Clang Analyzer Incocations。
增量分析:只有更改的文件及其依賴項需要重新分析。
假陽性抑制,有可能添加評論評論。
結果在命令行或靜態HTML中可視化。
您可以存儲和可視化數千個分析儀的分析報告,例如Clang靜態分析儀(C/C ++),Clang Tidy(C/C ++),Facebook推斷(C/C ++,Java),Clang Sanitizers(C/C ++)(C/C ++),Spotbugs(Java),Pythint(Python),Eslint(Javas),...
有關完整列表,請參見支持的分析師
Web應用程序,用於查看具有簡化,簡單體驗的發現的代碼缺陷(帶有PostgreSQL或SQLite後端)。
Gerrit和GitLab集成顯示了分析結果,例如GitLab或Gerrit評論。
可過濾(缺陷檢查器名稱,嚴重性,源路徑等)和可比較(計算項目的兩個分析之間的差異,表明已修復了哪些錯誤並新引入了哪些錯誤)結果查看。
DIFF模式:這顯示了自您上次分析儀執行以來已引入的錯誤列表。
結果可以與其他開發人員共享,評論和審核系統有助於代碼缺陷的交流。
易於實現的基於節儉的服務器客戶通信,用於存儲和查詢發現的缺陷。
支持多個錯誤可視化前端,例如Web應用程序,命令行工具和Eclipse插件。
CodeChecker命令有許多子命令,例如可以使用這些子命令來記錄和分析您的項目,打印結果或啟動Web服務器。有關完整列表,請參見下表或檢查此命令的幫助消息( CodeChecker --help ):
CodeChecker子命令 | 描述 |
|---|---|
analyze | 為JSON編譯數據庫中記錄的文件執行支持的代碼分析儀。 |
analyzer-version | 打印正在使用的CodeChecker Analyzer軟件包的版本。 |
analyzers | 列表支持和可用的分析儀。 |
check | 對項目進行分析,並打印為標準輸出。 |
checkers | 列出可用於代碼分析的調查器。 |
cmd | 查看分析從命令行上運行的服務器上的結果。 |
fixit | 根據分析儀的建議應用自動修復程序。 |
log | 運行構建命令,收集執行的編譯命令,然後將其存儲在JSON文件中。 |
parse | 打印分析摘要並以人為可讀的格式產生。 |
server | 啟動並管理Codechecker Web服務器。 |
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 store服務器( CodeChecker Store )。
比較兩個分析結果/運行,以顯示兩者之間不同的結果( CodeChecker cmd diff )。
ETC。
有關如何使用CodeChecker的更多信息,請參見我們的用戶指南。
入門(如何使用示例)
分析儀用戶指南
避免或抑制誤報
檢查器和靜態分析儀配置
海灣合作委員會不兼容
抑制誤報
Web服務器用戶指南
Web GUI用戶指南
命令行和Web UI功能概述
安全配置
配置身份驗證
配置授權
部署
使用Docker部署服務器
服務器配置
配置服務器記錄
在一台服務器中設置多個CodeChecker存儲庫
連續集成(CI)
CodeChecker作為GitHub動作
用Gerrit和Jenkins設置CI門控
數據庫配置
PostgreSQL數據庫後端設置指南
CodeChecker服務器和數據庫架構升級指南
CodeChecker可以用作可視化分析儀結果的通用工具。
支持以下工具:
| 語言 | 分析儀 |
|---|---|
| C/C ++ | Clang靜態分析儀 |
| 叮噹整潔 | |
| clang消毒劑 | |
| CPPCHECK | |
| Facebook推斷 | |
| 球球 | |
| Smatch | |
| 內核-Doc | |
| 疏 | |
| cpplint | |
| C# | Roslynator.dotnet.Cli |
| 爪哇 | 斑點 |
| Facebook推斷 | |
| Python | 皮層 |
| 碎片 | |
| JavaScript | eslint |
| 打字稿 | tslint |
| 去 | 戈林特 |
| 降價 | Markdownlint |
| 獅身人面像 |
有關詳細信息,請參閱支持的代碼分析儀文檔和報告轉換器工具。
有用的工具,也可以在CodeChecker之外使用。
構建Logger(從您的構建中生成JSON編譯數據庫)
PLIST/SARIF到HTML轉換器(從給定的PLIST或SARIF文件生成HTML文件)
報告轉換器工具(將分析結果從其他分析儀轉換為CodeChecker報告目錄格式)))
翻譯單元收集器(收集翻譯單元的源文件或獲取取決於給定標頭文件的源文件)
報告哈希發電機(為報告生成唯一的哈希標識符)
輔助腳本用於日常分析
pip安裝CodeCheckerCodeChecker在PYPI上可用,可以使用以下命令安裝:
PIP3安裝CodeChecker
注意:此軟件包可以安裝在Linux , OSX和Windows系統上,其中pip3命令可用。在OSX上,必須安裝intercept-build以進行記錄( CodeChecker log )。在Windows上,沒有記錄。
snap軟件包管理器安裝CodeCheckerCodeChecker可在Snap Store上使用,可以使用以下命令安裝:
sudo snap install codechecker - 典型
注意:不幸的是,SNAP軟件包僅支持下部命令名稱。因此,您需要使用codechecker命令,而不是到處都是CodeChecker 。有關CodeChecker Snap軟件包中可用命令的完整列表,請運行snap info codechecker 。
有關詳細的依賴性列表,以及有關如何安裝新的Clang和Clang Tidy版本的說明,請參閱要求。以下命令用於在Ubuntu 20.04 LTS上引導CodeChecker:
#為開發和分析環境安裝強制性依賴。 clang clang-tidy cppcheck g ++建立捲曲
GCC-Multilib git Python3-Dev Python3-VENV Python3-stetoopools#對於Venv_dev Target和Ubuntu 23 Linux,安裝一個附加庫:SUDO APT-GET安裝LibPQ-DEV#安裝Web的nodejs依賴網絡依賴性。對於Debian/Ubuntu,您可以使用#以下命令。有關更多信息,請參見官方文檔:#https://nodejs.org/en/download/package-manager/curl-curl -sl https://deb.nodesource.com/setup_16.x | sudo -e bash-
sudo apt -get install -y nodejs#查看codechecker源代碼.git clone https://github.com/ericsson/codechecker.git--depth 1〜/codecheckercd〜/codechecker##創建一個python firtualenv,並設置為您的環境。 `venv`.ake venvsource $ pwd/venv/bin/activate#[可選]如果要使用外部身份驗證方法(ldap/pam),請按照#docs/web/authentication.md#外部 - authentication-methods##構建codechecker poffect.make witch usectstort of partect of partect of partect of partect of partect of of partect of partect of partect of partect of of partect of partect of partect,路徑=“ $ pwd/build/codechecker/bin:$ path” CD。注意:
默認情況下, make package也將構建32bit和64bit LDLOGGER共享對象。如果您想構建和包裝64 bit only共享對象和ldlogger二進製文件,則可以將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 。
使用make standalone_package而不是make package ,以避免在運行CodeChecker之前手動激活環境。
如果您將系統的Python升級到了較新的版本(例如,將Ubuntu從3.8 LTS升級到3.11 LTS),則已安裝的環境將無法開箱即用。要解決此問題,請運行以下命令以升級您的checker_env :
CD〜/CODECHECKER/VENV Python3 -M Venv。
有關Mac OS X的安裝說明,請參見Mac OS X安裝指南文檔。
要在Docker中運行Codechecker服務器,請參閱Docker文檔。您可以在Docker Hub上找到Codechecker Web-Server容器。
您可以從Visual Studio Marketplace或Open VSX安裝和使用CodeChecker Vscode擴展名。
主要功能:
從編輯器運行CodeChecker分析,並自動查看結果。
保存時重新分析當前文件。
作為構建系統的一部分,命令和構建運行CodeChecker的任務。
瀏覽發現的報告,並直接顯示代碼中的複制步驟。
在繁殖步驟之間導航。

有關如何安裝和使用此插件的更多信息,請參見此擴展程序的存儲庫。

CodeChecker可以通過可重複使用的GITHUB操作執行您的項目!您只需要指定構建命令,就好像您將在本地運行分析一樣。
有關更多信息,請查看有關GitHub Action市場的CodeChecker靜態分析動作。
這些步驟必須始終在您希望執行分析的新命令提示中採取。
源〜/codechecker/venv/bin/activate#codechecker包裝#注意:如果要始終指定CodeChecker的完整路徑,請跳過此行,如果您始終指定CodeChecker的完整路徑=〜/codechecker/build codechecker/codechecker/bin/bin/bin:$ path#path path path path path path path of ind off clang/clang/clang und inf ins inf inf lin inf lin face in Inflang/line face.路徑>/build/bin:$路徑
使用check命令分析您的項目:
CodeChecker check -b "cd ~/your-project && make clean && make" -o ./results
check將打印分析儀在項目中發現的問題的概述。報告將以plist XML格式存儲在./results Results目錄中。
您可以通過執行將結果可視化為靜態HTML
CodeChecker parse -e html ./results -o ./reports_html
索引頁面將在./reports_html/index.html中生成所有記者列表
如果您有數百個結果,則可能需要使用數據庫後端將它們存儲在Web服務器上。
在另一個終端或背景過程中啟動CodeChecker Web和存儲服務器。默認情況下,它將在localhost:8001上收聽。
包含報告的SQLITE數據庫將放置在您的工作區目錄中( ~/.codechecker默認情況下),可以通過-w標誌提供。
CodeChecker server
將您的分析報告存儲到服務器上,以便能夠使用Web查看器。
CodeChecker store ./results -n my-project
打開瀏覽器中的CodeChecker Web查看器,應該向您迎接您的Web應用程序,向您顯示分析結果。
建築學
包裝佈局
依賴性
節儉界面
包裝和集成測試
有關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靜態分析工具集的工業經驗